View Full Version : Generare hash di una stringa c/c++
Salve a tutti,
ho una stringa e vorrei generare l'hash di questa e confrontarla con un altra...
Come faccio?
Uso dev c++
Ciao.
L'hash non è una grandezza univoca, ci sono infiniti modi per calcolarlo...ad esempio un hash semplicissimo può essere quello composto da somma dei valori ascii dei caratteri che compongono la stringa diviso per la lunghezza della stringa...
La complessità dell'hash che vuoi calcolare dipende sempre da qual'è lo scopo per cui lo vuoi usare...quindi spiegaci meglio lo scopo di questo hash...
Devo fare un programmino per un esame.
Allora vorrei fare questo:
All'apertura del programma l'utente inserisce una password...
Questa password è memorizzata in un file...
La password pero vorrei salvarla su file come hash e quindi confrontare l'hash salvato con l'hash della password inserita...
Ciao.
Allora ti serve un hash bello potente in cui le collisioni possibili siano minime...
Per una hashtable ad esempio ti sarebbe bastato anche un hash come quello che ti ho detto sopra...
Hai due scelte:
- te lo crei da solo (mi sa che non ti conviene)
- vai a prendere il codice di qualche hash noto (md5 o sha1) o usi qualche libreria che te lo calcola
Questa applicazione deve girare su qualche sistema operativo in particolare o il codice deve compilare su sistemi operativi diversi ?
se deve andare solo su Windows potresti usare le CryptoAPI, altrimenti qui c'è il codice di MD5: http://en.wikipedia.org/wiki/Md5
No no a me serve una cosa semplice...come md5
Io ricordo che si trovava ad esempio da prompt con un semplice comando...
Ciao.
md5 non è una cosa "semplice"...
Comunque facci sapere per quale sistema operativo ti serve...
Niente di che lo devo utilizzare in un semplice programmino in c/c++
su windows....sto utilizzando dev c++ come compilatore...
Ciao.
Niente di che lo devo utilizzare in un semplice programmino in c/c++Di implementazioni del MD5 in C o C++ ne trovi a bizzeffe in rete. Una la trovi pure nella RFC1321 (http://tools.ietf.org/rfc/rfc1321.txt).
Non ci sarebbe per caso una libreria dos o altro da poter includere e richiamare la funzione apposita?
Mi sembra che in dos o in linux basti dare il comando md5 da prompt...
Ciao.
Mi sembra che in dos o in linux basti dare il comando md5 da prompt...Beh, basta trovare la equivalente utility per Windows ....
http://www.google.it/search?hl=it&q=md5sum+win32&btnG=Cerca&meta=
Mi sembra che in dos o in linux basti dare il comando md5 da prompt...
No, non basta...non in tutte le distribuzioni è possibile, quindi non puoi contare su questo. In Windows men che meno...
Scusa, ma che ti ci vuole ad aggiungere l'implementazione di md5 al tuo progetto ? Basta prenderti il codice che ti ha passato andbin, lo emtti nei rispettivi file (tutti tranne mddriver.c)...
Dopo ti basta includere il .h e ti definisci una funzione come questa:
static void MD5String (string)
char *string;
{
MD5_CTX context;
unsigned char digest[16];
unsigned int len = strlen (string);
MD5Init (&context);
MD5Update (&context, string, len);
MD5Final (digest, &context);
printf ("MD%d (\"%s\") = ", MD, string);
MD5Print (digest);
printf ("\n");
}
Ovviamente devi modificare il codice per ritornare la stringa invece di stamparla...
Già finito e già pronto...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.