Bonjour,
Je suis en train de faire une implémentation de l’algorithme md5 en C++. Mais j’ai un problème au niveau de l’algorithme en lui-même.
J’ai repris les même notations que celle qu’on peut trouver sur cette page : http://www.bibmath.net/crypto/moderne/md5.php3
Mon problème vient à la fin. La signature finale est composée des 4 buffers A, B, C, D (de 32 bits chacun) qu’on doit concaténer pour faire une chaîne de 32 caractères. Or un caractère est codé sur 8 octets. Le buffer A nous permet donc de trouver 4 caractères, le B la même chose, etc. Soit un totale de (4*4) 16 caractères et non 32. Je suis conscient qu’il y a plusieurs caractères de la table ascii qui sont inutile. De plus le code md5 est (apparemment) composé uniquement des caractères suivant : a-z et de 0-9 (soit 26 + 10 = 36 caractères). Je me suis dit qu’on avait peut être besoin que de 4bits pour trouver un char compris dans l’ensemble {a-z+0-9} mais sur 4bits il n’y a que 16 possibilités. Donc ce n’est pas possible comme ça non plus.
Quelqu’un peut-il m’aider ? Je n’ai peut être pas été clair dans mon explication donc je résume ma question : Comment peut on trouver un chaîne de 32 caractères à partir d’un buffer de 128 bits ?
Merci d’avance
Partager