Was ist die Ausgabelänge von PHP crypt()
?Was ist die Ausgabelänge von PHP crypt()?
md5()
Ausgabe ist 128 Bits und erzeugen eine Zeichenfolge mit 32 Zeichen, so in der Datenbank setzen Sie das in eine char(32)
Spalte, was ist mit der crypt()
?
Was ist die Ausgabelänge von PHP crypt()
?Was ist die Ausgabelänge von PHP crypt()?
md5()
Ausgabe ist 128 Bits und erzeugen eine Zeichenfolge mit 32 Zeichen, so in der Datenbank setzen Sie das in eine char(32)
Spalte, was ist mit der crypt()
?
Hinweis: Es ist völlig beschränkt sich die Frage auf diese Weise zu fragen, siehe http://php.net/crypt
einige weitere Details:
crypt
gibt immer die Hash-Zeichenfolge oder eine Zeichenfolge zurück, die kürzer als 13 Zeichen ist und die sich im Fehlerfall von der Salzmenge unterscheidet.Beispiele:
Ermöglicht für einen Standard-DES-basierten Hash leicht mit einem einfachen crypt
Anruf und ein gültigen Zwei-Zeichen-Salz beginnen:
13 :: 2 (salt) + 11 (hash - 64 bits, base 64)
Wenn Sie PHP crypt
und speziell MD5 (hier besser benannt: md5crypt, MD5 (Unix), FreeBSD MD5, Cisco-IOS MD5; Hashcat-Modus 500) und eine leere Salz, ist die Ausgabelänge:
26 :: 3 (`$1$`) + 0 (empty salt) + 1 (`$`) + 22 (hash - 128 bits, base 64)
Wenn auf einem System, in dem crypt
defaults PHP zu dem genannten MD5 und es nicht die Angabe eines Salz genannt wird, wird crypt
das Salz erzeugen. Dieses Salz ist normalerweise 8 Zeichen lang. Die Ausgabelänge ist dann:
34 :: 3 (`$1$`) + 8 (salt) + 1 (`$`) + 22 (hash)
In diesem Fall Spalte Ihrer Datenbanktabelle char(32)
entweder einen Fehler beim Einfügen melden würde oder gestutzt - je nachdem, welche Datenbankserver Sie verwenden.
Aber das MD5 Beispiel ist moot, ich wählte es aus, weil Sie es in Ihrer Frage haben, aber Sie sollten nicht MD5 mit crypt
verwenden (siehe: Md5crypt Password scrambler is no longer considered safe by author).
Werfen wir stattdessen einen Blick auf Blowfish Hashing (CRYPT_BLOWFISH
). Es verfügt über ein zweistelligen Kosten Parameter und immer eine Salzlänge von 22 (wenn eine kürzeren Salz gegeben wird, ist es mit $
s gepolstert ist):
60 :: 4 (`$2y$`) + 3 (cost `$`) + 22 (salt) + 1 (`$`) + 53 (hash)
Für die Blowfish Krypta Hash-Algorithmus (bcrypt, OpenBSD Blowfish; Hashcat-Modus 3200) gibt es eine feste Länge von 60 dann.
Wie Sie sehen, hängt die Ausgabelänge vom verwendeten Hash-Algorithmus ab. Die Länge des Salzes und sogar einige Hash-spezifische Parameter wie kosten.
Wenn Sie zum Beispiel opt von SHA512 mit 999 999 999 Runden und ein 16 Byte langen Salz, die Ausgangslänge:
123 :: 3 (`$6$`) + 17 (`rounds=999999999$`) + 16 (salt) + 1 (`$`) + 86 (hash)
Dieses Beispiel ein wenig extrem ist vielleicht, nur das Bild zu zeigen.
Andere crypt
Fragen:
Gibt die Hash-Zeichenfolge oder eine Zeichenfolge, die kürzer als 13 ist Zeichen und unterscheidet sich garantiert vom Salz bei Ausfall.
crypt() gibt eine Hash-Zeichenfolge mit dem Standard-Unix-DES-basierten -Algorithmus oder alternativen Algorithmen zurück, die möglicherweise auf dem -System verfügbar sind.
Einige Betriebssysteme unterstützen mehr als einen Hash-Typ. In der Tat wird manchmal der Standard DES-basierte Algorithmus durch einen MD5-basierten Algorithmus ersetzt. Der Hash-Typ wird durch das Argument salt ausgelöst. Vor 5.3, PHP würde die verfügbaren Algorithmen zum Zeitpunkt der Installation basierend auf dem System crypt() bestimmen. Wenn kein Salz zur Verfügung gestellt wird, generiert PHP automatisch entweder ein Standard-Zwei-Zeichen (DES) -Salz oder ein zwölf -Zeichen (MD5), abhängig von der Verfügbarkeit von MD5 crypt(). PHP legt eine Konstante namens CRYPT_SALT_LENGTH fest, die das längste zulässige Salz angibt, das von den verfügbaren Hashes zulässig ist.
mehr lesen: http://php.net/crypt
Wie Sie im documentation, die '' 'crypt()' '' Funktion verwendet wird, mit verschiedenen Hash-Algorithmen zu sehen. Die Länge kann also unterschiedlich sein und hängt vom Standard-Hashing-Algorithmus ab, der durch die in der Dokumentation beschriebenen Konstanten bestimmt werden kann.
crypt() stützt sich auf die verfügbaren Verschlüsselungsmethoden. Die am häufigsten verwendete Methode für PHP ist MD5, die immer 32 Zeichen zurückgibt. Andere Methoden wie DES und Blowfish geben Strings mit variabler Länge zurück.
Sie müssen wissen, welche Methode die Funktion crypt() in Ihrem Server verwendet.
@Gumbo: Ich hoffe es ist. –
@Gumbo Was ist falsch an dieser Antwort? – Baba
Ich würde ein wenig mehr Erklärung erwarten. Zum Beispiel, wie die zurückgegebene Zeichenfolge erstellt wird und wie sich die Eingabe auf die Ausgabe auswirkt. – Gumbo