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!
