2010-03-14 5 views
1

Je souhaite créer un hachage unique (16 caractères) d'une chaîne de longueur arbitraire. Y at-il une bonne bibliothèque qui implémente MD5 ou SHA-1 pour C++ avec laquelle je peux y parvenir? (et peut-être un exemple de comment l'utiliser)hachage unique de chaîne

+8

Ce que vous demandez est fondamentalement impossible. Il y a plus de chaînes de longueurs arbitraires que de chaînes de 16 caractères, donc les hachages _unique_ sont impossibles. Il y a beaucoup de bibliothèques qui implémentent les algorthims MD5 et SHA-1, mais pouvez-vous clarifier vos besoins? –

+2

Il est impossible qu'un hachage à longueur fixe de chaînes de longueur arbitraire soit unique. – sepp2k

+0

Est-il possible d'énumérer les chaînes et de construire la fonction de hachage par la suite, à la volée? Êtes-vous à la recherche d'une http://en.wikipedia.org/wiki/Perfect_hash_function? –

Répondre

5

Le Pigeonhole Principle explique pourquoi ce que vous demandez est impossible en ce qui concerne l'unicité.

+0

comment MD5 fonctionne, car il hache les chaînes de longueur arbitraires aux valeurs hexadécimales à 32 chiffres – Aly

+0

Oui, mais si vous exécutez suffisamment de chaînes via MD5, vous obtiendrez deux chaînes différentes qui ont le même hachage: http: // www. google.com/search?q=md5+collision –

1

Vous avez besoin de la bibliothèque openssl. Il a des implémentations des hachages crypto standard à cet effet.

1

nss fournit un certain nombre d'algorithmes de hachage et de cryptographie et possède une licence plus libérale qu'OpenSSL.

Questions connexes