Classe simple pour produire un hash sha-1 d'un buffer quelconque

Description

Et voila une implémentation de sha-1.
Une classe toute bête à utiliser.

Je n'ai utilisé que la bilbiothèque standard donc cela devrait compiler sous windows.
La classe a une fonction qui prend en argument un pointeur de tableau char* et la longueur du tableau.
Le retour c'est un pointeur char d'une string "char" terminé par un 0.

Pensez à détruire le pointeur de retour de la fonction, après usage .


J'ai compilé avec: g++ -o2 -s -Wall *.cc -o exec

Cette implementaion est conforme à la "FEDERAL INFORMATION PROCESSING STANDARS PUBLICATION"
soit la FIPS PUB180-3 http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf

Par consequent les noms de variables et fonctions suivent au plus près la publication officielle.

Je voulais une fonction de hash omnipotente pouvant accepter autant une chaine de caracteres
terminée par un zero qu' un buffer remplie par n'importe quels caracteres .
J'ai donc choisi une fonction acceptant un pointer char et la longueur du buffer.
J'ai tout intégré dans une classe qui permet d'etre completée plus tard et permet de rester
compacte .

Une fonction de hash sert a verifier l'integritée d'un message en produisant une suite de chiffres.
C'est un peu comme l' empreinte digitale d'un individu.
On s'en sert pour verifier l'integritée d'un message apres l'envoi de celui ci.

Le hash sha1 est le plus simple des fonctions de hash reconnue par l'administration americaine ,
pour ces propres echanges de documents .


Sans etre la plus performente elle reste tres efficace .



Le hash sha1 de la chaîne de caractères:
"azertyuiopqsdfghjklmwxcvbnazertyuiopqsdfghjklmwxcvbnazertyuiopqsdfghjklmwxcvbn"
est :
50f2937eeaba669c7e895d7cc000acb99290d9b3

main.cc

#include "iostream"
#include "Hash.hpp"
#include <cstdlib>
 
 
 //       to  compile   use   g++ -o2 -s -Wall *.cc -o exec 
 
 

int main (int argc ,char * args[])

{


Hash hashTool;


char s []  ="azertyuiopqsdfghjklmwxcvbnazertyuiopqsdfghjklmwxcvbnazertyuiopqsdfghjklmwxcvbn";

char * mystring = hashTool .  hSha1(s,strlen(s) ); 

std::cout<<std::endl<< mystring ;

std::cout<<std::endl<<"50f2937eeaba669c7e895d7cc000acb99290d9b3"<<std::endl;



delete  [] mystring ;



return 0;

}


Edit admin: correction texte + ajout de coloration et indentation. Mise au propre du code.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.