Binärdaten in Hex umwandeln



  • Ich versuche gerade vergeblich, einen binären SHA512-Hash in einen Hex-String umzuwandeln. Alles was ich bei Google gefunden hab, funzt irgendwie nicht 😞 .
    Bsp: "abc" ergibt gehasht: "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f".
    Ich hab den Hash jetzt aber nur in rohen Binärdaten vorliegen(also 64 Byte lang). Wie kann ich ihn jetzt in dieses Hex-Format bringen(dann 128 Byte lang)?



  • void make_hex_from_512_bits (unsigned char *in, char *out)
    {
       int s;
       for (s=0; s<64; s++)
          out += sprintf (out, "%02x", *in++); 
    }
    

    anwendung etwas so:

    char in[64] = {1,2,3};  // <-- hier der echte hash
       char out[129];          // <-- hier kommt der hexstring rein
       make_hex_from_512_bits (in, out);
       printf ("%s\n", out);
    

    🙂



  • Thx, funktioniert wunderbar!
    Gibts aber statt dem sprintf noch ne "elegantere" Lösung durch Berechnen statt durch formatierte Ausgabe?



  • void make_hex_from_512_bits (unsigned char *in, char *out)
    {
       int s;
       static char *hex = "0123456789abcdef";
       for (s=0; s<64; s++)
       {
          *out++ = hex[*in>>4];
          *out++ = hex[*in++&0x0f]; 
       }
       *out = 0;
    }
    

    🙂



  • Perfekt! Thx! 😃


Anmelden zum Antworten