verweisen auf http://php.net/manual/en/function.sha1.phpWie mache ich SHA1 in c, die rohe Ausgabe zurückgibt?
Wenn die optionale raw_output auf TRUE gesetzt ist, dann wird die SHA1-Extrakt statt in Raw-Binary-Format mit einer Länge von 20, andernfalls wird der Rückgabewert zurückgegeben wird, ist ein 40-stellige Hexadezimalzahl.
Mein aktueller Code ist
char *concat = "somestring";
int i = 0;
unsigned char hash[SHA_DIGEST_LENGTH];
char buf[SHA_DIGEST_LENGTH*2];
memset(buf, 0x0, SHA_DIGEST_LENGTH*2);
memset(hash, 0x0, SHA_DIGEST_LENGTH);
SHA1((unsigned char *)concat, strlen(concat), hash);
for (i=0; i < SHA_DIGEST_LENGTH; i++) {
sprintf((char*)&(buf[i*2]), "%02x", hash[i]);
}
printf("<<sha1=%s>>\n", buf);
Es funktioniert gut, aber String in Hex zurück.
Was ist der beste Ansatz, um das zu erreichen?
Danke.
Bitte zeigen/beschreiben Sie die gewünschte Ausgabe/Ergebnis. Ein Array von 20 Bytes mit dem Wert? Drucken, das nicht möglich ist (zumindest wird es keine vernünftige Möglichkeit geben, druckbare Zeichen zu sein). – Yunnosch
Ich frage mich, was die PHP-Dokumentation damit zu tun hat. Lesen Sie in jedem Fall Ihren Code. Sie haben einen Teil, der den Hash in Hex konvertiert. Benutze diesen Code nicht. –
@Yunnosch Ich weiß nicht, wie es aussehen soll. – stakantin