2016-04-03 1 views
1

je le code suivant pour calculer le hachage SHA512:Comment imprimer SHA512 hash en C

#include <stdio.h> 
#include <string.h> 
#include <openssl/sha.h> 

int main() { 
    char *password = "test"; 
    char hash[SHA512_DIGEST_LENGTH]; 

    SHA512(password, strlen(password), hash); 

    return 0; 
} 

Comment imprimer le hachage calculée en hexadécimal?

Merci

+0

En énumérant les octets dans le hachage et en déchargeant leur représentation sous forme de caractères hexadécimaux (0..9, a..f) sur la console. Il y a * plusieurs * façons de le faire. Je – WhozCraig

Répondre

2

Changer hash d'être unsigned char hash[SHA512_DIGEST_LENGTH]. Puis:

for(int i = 0; i < SHA512_DIGEST_LENGTH; ++i) { 
    printf("%02x", hash[i]); 
} 
+0

utilisé l'un de ces calculatrices de hachage en ligne sha512 et le hachage SHA512 dans l'hexagone pour « test » est ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff qui est pas ce que je vois quand je l'imprimer à l'aide du code que vous avez posté. Voulez-vous s'il vous plaît dites-moi pourquoi est-ce? – user3266083

+0

Attendez mon mauvais, c'est. Il a ajouté ffffff à chaque 4 octets. Pourquoi donc? – user3266083

+1

Vous pouvez voir le 'ffffff' préfixé si vous avez des caractères signés car il sera promu en' int' et vous obtiendrez l'extension de signe pour les valeurs négatives. Pour le réparer, lancez d'abord, comme '(hasigned char) hash [i]'. – FatalError