Я буду запускати SHA256
пароль + сіль, але я не знаю, як довго заробляти VARCHAR
під час налаштування бази даних MySQL. Що таке хороша довжина?
Я буду запускати SHA256
пароль + сіль, але я не знаю, як довго заробляти VARCHAR
під час налаштування бази даних MySQL. Що таке хороша довжина?
Відповіді:
Sha256 - це 256 біт, як вказує його назва.
Оскільки sha256 повертає шістнадцяткове представлення, для кодування кожного символу достатньо 4 бітів (замість 8, як для ASCII), тож 256 бітів представлятимуть 64 шістнадцяткових символів, тому вам потрібен а varchar(64)
, або навіть a char(64)
, оскільки довжина завжди однакова , зовсім не змінюючись.
І демонстрація:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Дасть вам:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
тобто рядок із 64 символами.
varchar(65)
для ведучого !
... просто кажу.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
це завжди 44 незалежно від довжини початкового рядка.
Параметри кодування 256-ти біт SHA256:
CHAR(44)
включаючи символи прокладкиCHAR(64)
BINARY(32)
=
баночку можна зняти і знову додати.
Я вважаю за краще використовувати BINARY (32), оскільки це оптимізований спосіб!
Ви можете розмістити в цих 32 шістнадцяткових цифрах від (00 до FF).
Тому БІНАР (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Потім, отримуючи його, ви SELECT HEX(hash_column) AS hash_column
.
Навіщо зробити це ВАРЧАР? Він не змінюється. Це завжди 64 символи, які можна визначити, запустивши що-небудь в один з онлайн-калькуляторів SHA-256 .
Це буде зафіксовано 64 символів, тому використовуйте char(64)
CHARACTER SET ascii
.
SHA-*
хеш-паролі, ПРОСУЖДАЙТЕ це спочатку прочитати .