Tôi sẽ chạy SHA256
bằng mật khẩu + muối, nhưng tôi không biết phải làm bao lâu VARCHAR
khi thiết lập cơ sở dữ liệu MySQL. Một chiều dài tốt là gì?
Tôi sẽ chạy SHA256
bằng mật khẩu + muối, nhưng tôi không biết phải làm bao lâu VARCHAR
khi thiết lập cơ sở dữ liệu MySQL. Một chiều dài tốt là gì?
Câu trả lời:
Một sha256 dài 256 bit - như tên gọi của nó.
Vì sha256 trả về một đại diện thập lục phân, 4 bit là đủ để mã hóa từng ký tự (thay vì 8, như đối với ASCII), do đó 256 bit sẽ đại diện cho 64 ký tự hex, do đó bạn cần a varchar(64)
, hoặc thậm chí a char(64)
, vì độ dài luôn giống nhau , không thay đổi chút nào.
Và bản demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
Sẽ cung cấp cho bạn:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
tức là một chuỗi có 64 ký tự.
varchar(65)
để dẫn đầu !
... chỉ cần nói.
SELECT length(to_base64(unhex(sha2('say hello to my little friend',256))))
, nó luôn là 44 cho dù độ dài của chuỗi gốc là bao nhiêu.
Tùy chọn mã hóa cho 256 bit của SHA256:
CHAR(44)
bao gồm ký tự đệmCHAR(64)
BINARY(32)
=
có thể được tước và thêm lại.
Tôi thích sử dụng BINary (32) vì đó là cách tối ưu hóa!
Bạn có thể đặt trong đó 32 chữ số hex từ (00 đến FF).
Do đó BINary (32)!
UPDATE...SET hash_column=UNHEX(sha256HexString)
. Sau đó, khi lấy nó, bạn SELECT HEX(hash_column) AS hash_column
.
Tại sao bạn lại biến nó thành VARCHAR? Nó không khác nhau. Nó luôn có 64 ký tự, có thể được xác định bằng cách chạy bất cứ thứ gì vào một trong các máy tính SHA-256 trực tuyến .
SHA-*
để băm mật khẩu, xin vui lòng đọc nó trước .