Sie haben 32 Ziffern. Wenn wir davon ausgehen, dass alle Chiffren gleichmäßig verteilt sind, gibt es 10 ^ 32 Kombinationen, die nur aus numerischen Chiffren, 6 ^ 32 Kombinationen von nur alphabetischen Chiffren und insgesamt 16 ^ 32 Kombinationen bestehen.
Das macht eine (10 ^ 32 + 6 ^ 32) / 16 ^ 32 Wahrscheinlichkeit, dass Ihr Skript bei jedem Aufruf fehlschlägt.
%Vor%Also einmal in etwa 3,4 Millionen Fällen wird es scheitern. Wie oft willst du es benutzen?
Theoretisch kann ein MD5-Hash (wenn er in eine hexadezimale Zeichenfolge konvertiert wird) nur Dezimalziffern oder nur Buchstaben enthalten.
In der Praxis auch yes: Die Zeichenkette ximaz
ergibt einen MD5-Hash von 61529519452809720693702583126814
. Probieren Sie es aus!
(Danke PHP Traurigkeit für das Beispiel)
Ich glaube, Sie arbeiten mit der Hex-Darstellung der MD5-Hashes. MD5-Hashes sind eigentlich 128-Bit-Strings. Die meisten Werkzeuge drucken sie mit der hexadezimalen Darstellung, die 32 Hexadezimalziffern entspricht. Hexadezimalziffern verwenden 0-9 und a-f.
Beispiel:
%Vor%MD5 sollte eine gute Hash-Funktion sein ( derzeit defekt, sollte nicht verwendet werden Sicherheitsanwendungen ), was bedeutet, dass es zufällig aussehende Ausgabe erzeugt, so dass alle möglichen Werte die in den Ausgangsraum passen, werden verwendet. Diese Buchstaben und Zahlen sind Hexadezimaldarstellungen der Ausgabe. Ja, manchmal könnten Sie eine Ausgabe erhalten, die nur aus Buchstaben oder Zahlen besteht, aber die meiste Zeit haben Sie beide.
Wenn ich hexadezimale Darstellungen von MD5 analysieren müsste, würde ich sicherlich Zeit nehmen, um diese eher seltenen Fälle zu unterstützen, wenn die Ausgabe nur Buchstaben oder nur Zahlen ist.