Tôi sẽ chạy SHA256
trên mật khẩu + muối, nhưng tôi không biết phải làm bao lâu để tạo VARCHAR
khi thiết lập cơ sở dữ liệu MySQL. Chiều dài tốt là gì?Hàm băm SHA256 dài bao lâu?
Trả lời
Một sha256 dài 256 bit - như tên gọi của nó.
Nếu bạn đang sử dụng một biểu diễn thập lục phân, mỗi chữ số mã cho 4 bit; vì vậy bạn cần 64 chữ số để đại diện cho 256 bit - vì vậy, bạn cần một số varchar(64)
hoặc char(64)
, vì độ dài luôn giống nhau, không thay đổi chút nào.
Và demo:
$hash = hash('sha256', 'hello, world!');
var_dump($hash);
sẽ cung cấp cho bạn:
$ php temp.php
string(64) "68e656b251e67e8358bef8483ab0d51c6619f3e7a1a9f0e75838d41ff368f728"
ví dụ: một chuỗi với 64 ký tự.
chúng ta có thể sử dụng char (64) làm khóa chính hay nhị phân (32) tốt hơn không? (access_token) – frankish
Nếu bạn nghĩ rằng bạn có thể muốn chặn một người dùng trong tương lai, sau đó tôi đề nghị sử dụng 'varchar (65)' cho một '!' hàng đầu ... chỉ cần nói. – Manatax
... hoặc chỉ cần thêm cột 'bị chặn'? –
Tại sao bạn làm cho VARCHAR? Nó không thay đổi. Nó luô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 one of the online SHA-256 calculators.
là char (64) một câu lệnh mysql hợp lệ? – sepiroth
@hatorade: Không, đó không phải là tuyên bố, nhưng đó là một loại cột hợp lệ. –
varchar cũng không phân bổ không gian trừ khi nó được sử dụng, không giống như char nó phân bổ số lượng tổng số ký tự được phép bất kể có dữ liệu điền không. – Xenland
Nó sẽ được cố định 64 ký tự, vì vậy sử dụng char(64)
Tôi thích sử dụng Binary (32) vì nó là cách tối ưu hóa!
Bạn có thể đặt trong đó 32 chữ số thập phân từ (00 đến FF).
Vì vậy, BINARY (32)!
+1 - Tôi thích tối ưu hóa ... cho bất kỳ ai khác đang diễn ra trên này ... để sử dụng điều này với MySQL ... bạn có thể sử dụng 'UPDATE ... SET hash_column = UNHEX (sha256HexString)'.Sau đó, khi lấy nó, bạn 'SELECT HEX (hash_column) AS hash_column'. –
tùy chọn Encoding cho 256 bit SHA256 của:
- Base64: 6 bit mỗi char =
CHAR(44)
bao gồm nhân vật đệm - Hex: 4 bit mỗi char =
CHAR(64)
- Binary: 8 bit cho mỗi byte =
BINARY(32)
Base64 là 3 byte cho 4 ký tự, vì vậy mặc dù 32 byte phù hợp với 43 ký tự, bạn thực sự cần 44. Thêm = được thêm làm ký tự cuối cùng – Wilco
- 1. Hàm băm SHA256 trong Python 2.4
- 2. Mã kéo dài bao lâu?
- 3. Trang web có thể dài bao lâu?
- 4. Bản quyền GPL kéo dài bao lâu?
- 5. Biến tĩnh PHP kéo dài bao lâu?
- 6. Hàm băm SHA256 luôn có 64 ký tự?
- 7. Tính toán hàm băm SHA256 trong Android/Java và C#
- 8. Mất bao lâu SHA-1 để tạo băm?
- 9. Hàm băm cho một cặp dài?
- 10. Có bao nhiêu băm SHA256 có thể tính toán máy tính hiện đại?
- 11. Các trường email SQL nên dài bao lâu?
- 12. Tại sao base64 băm sha1/sha256?
- 13. JS: Mất bao lâu để gọi một hàm?
- 14. Hàm băm 256 bit Python với đầu ra số
- 15. lâu dài trong C/C++
- 16. URL từ ImagesService.getServingUrl trong bao lâu qua
- 17. Chuyển đổi hàm băm C# thành PHP
- 18. băm jquery nếu không có hàm băm
- 19. sự khác biệt giữa lâu dài và dài int
- 20. Xóa hàm băm URL
- 21. GCC có hỗ trợ lâu dài không?
- 22. Quản lý lâu dài với Google Guice
- 23. Cookie phiên kéo dài bao lâu trên thiết bị Android/iOS?
- 24. Bạn giữ cookie phiên trong bao lâu?
- 25. TLD có thể là bao lâu?
- 26. Mất bao lâu để học C?
- 27. Glibc mất bao lâu để biên dịch?
- 28. Chạy "tuyến đường cào" trong bao lâu?
- 29. Cách tốt nhất để tính thời gian các hàm trong C++ dài bao nhiêu?
- 30. SHA256 trong Objective-C cho iPhone
Trước khi mọi người đọc điều này quyết định làm theo lời khuyên này và sử dụng 'SHA- * 'để băm mật khẩu, [XIN đọc điều này trước] (https: //security.stackexchan ge.com/questions/16354/whats-the-advantage-of-using-pbkdf2-vs-sha256-to-generate-an-aes-encryption-key). – c00000fd
Một blog chi tiết có ví dụ: http: //sforsuresh.in/mysql_varchar_max_length/ –