Algorithme de hachage avec sortie alphanumérique de 20 caractères max

J'ai besoin d'un algorithme de hachage qui génère une chaîne alphanumérique qui est de max 20 caractères de long. Pour "alphanumérique", je veux dire [a-zA-Z0-9].

Entrées sont UUIDs dans la forme canonique (exemple 550e8400-e29b-41d4-a716-446655440000)

Dans la variante est-il un moyen de convertir un hachage SHA1 ou MD5 d'une chaîne de caractères avec ces limitations?

Grâce.

MODIFIER

N'a pas besoin d'être cryptographique sécurisé. Les Collisions de rendre les données inexactes, mais si elles se produisent sporadiquement je peux vivre avec ça.

EDIT 2

Je ne sais pas si tronquer MD5 ou SHA1 rendrait les collisions peuvent se produire trop souvent. Maintenant je me demande si c'est mieux de le tronquer à 20 caractères d'une valeur MD5 ou SHA1 valeur.

Avez-vous des propriétés souhaitées pour ces hachages? Devraient-ils être cryptographique sécurisé, ou juste assez bon pour une table de hachage?
Tu ne peux pas imprimer le hachage SHA1 ou MD5 de la chaîne en hexadécimal (ou base64) et tronquée à 20 caractères, si nécessaire?
Quel est votre objectif? Est-il tel que de simplement prendre une sous-chaîne de 20 caractères, d'un hash SHA1 ne fonctionnerait pas?
Je vais essayer de tronquer le SHA1 (MD5 ou, pas encore décidé) à 20 caractères. Je peux mesurer les collisions, donc je peux publier les résultats.

OriginalL'auteur Giacomo | 2011-01-28