Hash-Algorithmus mit der alphanumerischen Ausgabe von 20 Zeichen max
Brauche ich einen hash-Algorithmus, der gibt eine alphanumerische Zeichenkette mit maximal 20 Zeichen lang sein. Für "alphanumerisch" ich meine [a-zA-Z0-9]
.
Eingänge sind UUIDs in der kanonischen form (Beispiel 550e8400-e29b-41d4-a716-446655440000
)
Alternative gibt es einen Weg, um zu konvertieren ein SHA1 oder MD5-hash einer Zeichenfolge mit diesen Einschränkungen?
Dank.
BEARBEITEN
Nicht kryptographisch sicher. Kollisionen stellen die Daten ungenau, aber wenn Sie geschehen sporadisch und ich kann mit Ihr Leben.
EDIT 2
Ich weiß nicht, ob das abschneiden MD5 oder SHA1 machen würde, Kollisionen zu oft geschehen. Nun Frage ich mich, ob es besser abschneiden zu 20 Zeichen ein MD5-Wert oder einen SHA1-Wert.
- Haben Sie alle gewünschten Eigenschaften für diese hashes? Sollten Sie kryptografisch sichere, oder einfach nur gut genug für eine hash-Tabelle?
- Können Sie nicht einfach drucken Sie die SHA1-oder MD5-hash-string in hex oder base64) und abschneiden auf 20 Zeichen, wenn nötig?
- Was ist dein Ziel? Ist es so, dass nur ein 20 Zeichen Teilzeichenfolge der SHA1-hash nicht funktionieren würde?
- Ich werde versuchen, das abschneiden der SHA1 oder MD5, noch nicht entschieden) um die 20 chars. Ich kann Messen, Kollisionen, so kann ich die Ergebnisse posten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einfach befestigen Sie die Zeichen, die Sie nicht benötigen, aus dem hash-Wert der GUID. Mit einer guten hash-Funktion, die Unberechenbarkeit von jedem Teil der hash ist proportional zu dem Teil ist die Größe. Wenn Sie möchten, können Sie Sie verschlüsseln, base 32 anstelle der standard-hex-Basis 16. Beachten Sie, dass diese nicht wesentlich verbessern Entropie pro Zeichen (nur 25%).
Für nicht-kryptografische verwendet, spielt es keine Rolle, ob Sie abschneiden, MD5, SHA1 oder SHA2. Weder hat eklatante Mängel in der Entropie.