Ho bisogno di un algoritmo hash che emetta una stringa alfanumerica lunga 20 caratteri. Per "alfanumerico" intendo [a-zA-Z0-9]
.Algoritmo hash con output alfanumerico di max. 20 caratteri
ingressi sono UUID s in forma canonica (esempio 550e8400-e29b-41d4-a716-446655440000
)
In alternativa c'è un modo per convertire uno SHA1 o MD5 hash per una stringa con queste limitazioni?
Grazie.
EDIT
non ha bisogno di essere crittograficamente sicuro. Le collisioni rendono inaccurati i dati, ma se accadono sporadicamente posso conviverci.
EDIT 2
Non so se troncare MD5 o SHA1 renderebbe collisioni accadono troppo spesso. Ora mi chiedo se è meglio troncare a 20 caratteri un valore MD5 o un valore SHA1.
Avete delle proprietà desiderate per questi hash? Dovrebbero essere crittograficamente sicuri, o semplicemente abbastanza buoni per un hash table? – templatetypedef
Non puoi semplicemente stampare la stringa hash SHA1 o MD5 in esadecimale (o base64) e troncare a 20 caratteri se necessario? –
Qual è il tuo obiettivo? È così che solo una sottostringa di 20 caratteri di un hash SHA1 non funzionerebbe? –