Ich werde mit SHA256
einem Passwort + Salt arbeiten, aber ich weiß nicht, wie lange ich es VARCHAR
beim Einrichten der MySQL-Datenbank machen soll. Was ist eine gute Länge?
Ich werde mit SHA256
einem Passwort + Salt arbeiten, aber ich weiß nicht, wie lange ich es VARCHAR
beim Einrichten der MySQL-Datenbank machen soll. Was ist eine gute Länge?
Antworten:
Ein sha256 ist 256 Bit lang - wie der Name schon sagt.
Da sha256 eine hexadezimale Darstellung zurückgibt, reichen 4 Bit aus, um jedes Zeichen zu codieren (anstelle von 8, wie bei ASCII). 256 Bit würden also 64 hexadezimale Zeichen darstellen. Daher benötigen Sie ein varchar(64)
oder sogar ein char(64)
, da die Länge immer gleich ist überhaupt nicht variierend.
Und die Demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Werde dir geben :
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
dh eine Zeichenfolge mit 64 Zeichen.
varchar(65)
für einen führenden Benutzer zu verwenden !
.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
Es ist immer 44, unabhängig von der Länge der ursprünglichen Zeichenfolge.
Codierungsoptionen für die 256 Bit von SHA256:
CHAR(44)
Zeichen = einschließlich FüllzeichenCHAR(64)
BINARY(32)
=
kann abgestreift und wieder hinzugefügt werden.
Ich bevorzuge BINARY (32), da dies der optimierte Weg ist!
Sie können in diese 32 hexadezimalen Ziffern von (00 bis FF) setzen.
Deshalb BINARY (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Dann, wenn Sie es abrufen, Sie SELECT HEX(hash_column) AS hash_column
.
Warum würdest du es VARCHAR machen? Es variiert nicht. Es sind immer 64 Zeichen, die ermittelt werden können, indem etwas in einen der Online-SHA-256-Rechner eingegeben wird .
Es werden 64 Zeichen behoben, also verwenden char(64)
CHARACTER SET ascii
.
SHA-*
Passwörter zu hashen, lesen Sie dies bitte zuerst .