a_butta (Member)
Expert
Messaggi: 578
Iscritto: 16/03/2010
|
Ciao a tutti. Sono ritornato sul problema MD5. Sto cercando a tutti i costi di implementare questo algoritmo (per puro piacere ) ma dopo aver scritto un "campione" dell'implementazione, essa come mi aspettavo , non funzia.
Il problema è che non capisco dove sia il problema.
Ho incollato qui il mio codice:
http://pastebin.com/FJseb6Fk
Il nome delle funzioni chiarisce molto evidentemente il loro scopo. Il codice, avviso subito, è abbastanza confusionato, perché ciò che mi interessa attualmente è che esso funzioni. Ci sono variabili in più non usate e vi chiedo da subito scusa per le condizioni.
Comunque la parte che molto probabilmente mi dà problema è la funzione DoProcess cioè il cuore: preso un array bidimensionale [MessageLength / 16, 16], mi elabora ogni blocco di 32bit (4byte).
Il padding suppongo che sia giusto, ma arrivato a sto punto, non so più su cosa fondare le mie certezze.
Fattostà che provando l'Hash della stringa ciao mi viene fuori: B7FBA4713FA918F9DD964A6EBD1541E6 che è evidentemente sbagliata.
Potete aiutarmi?
Grazie in anticipo
PS: Per la stesura del codice, mi sono basato sullo pseudo-codice reperito in wikipedia (http://en.wikipedia.org/wiki/MD5) ma soprattutto sul "trattato" dello stesso Rivest: http://tools.ietf.org/html/rfc1321
Grazie ancora
|