2009-12-26 3 views

Répondre

2

Ou utilisez le libcrypto OpenSSL:

https://wiki.openssl.org/index.php/EVP_Message_Digests

+1

(+1) mais libssl prend un peu de temps pour s'y habituer, la documentation n'est pas facile à obtenir –

+0

+1 OpenSSL est certifié FIPS. Cela peut demander un certain effort pour apprendre à l'utiliser, mais beaucoup moins d'efforts que de coder une implémentation SHA-256 correcte. –

+0

Est-il possible d'afficher un exemple de code en utilisant libcrypto? – randombits

3

J'utilise une implémentation simple autonome par Christophe Devine - et alors que son site semble être hors du Net, Google Recherche de code le trouve in this place .

L'utilisation de ces sha256.c et sha256.h, le noyau de sa fonction main() est simplement

if(! (f = fopen(argv[1], "rb"))) 
     { 
      perror("fopen"); 
      return(1); 
     } 

     sha256_starts(&ctx); 

     while((i = fread(buf, 1, sizeof(buf), f)) > 0) 
     { 
      sha256_update(&ctx, buf, i); 
     } 

     sha256_finish(&ctx, sha256sum); 

     for(j = 0; j < 32; j++) 
     { 
      printf("%02x", sha256sum[j]); 
     } 

     printf(" %s\n", argv[1]); 
} 

Le reste de la fonction main() valide la norme FIPS-180-2 vecteurs de test, de sorte que vous obtenez ce sentiment chaud et floue trop/;-)

Questions connexes