Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Loại dữ liệu nào để sử dụng cho trường mật khẩu băm và độ dài là bao nhiêu?

Cập nhật:Chỉ sử dụng một hàm băm là không đủ mạnh để lưu trữ mật khẩu. Bạn nên đọc câu trả lời từ Gilles trên chủ đề này để được giải thích chi tiết hơn.

Đối với mật khẩu, hãy sử dụng thuật toán băm tăng cường khóa như Bcrypt hoặc Argon2i. Ví dụ:trong PHP, hãy sử dụng hàm password_hash () , sử dụng Bcrypt theo mặc định.

$hash = password_hash("rasmuslerdorf", PASSWORD_DEFAULT);

Kết quả là một chuỗi 60 ký tự tương tự như sau (nhưng các chữ số sẽ khác nhau, vì nó tạo ra một muối duy nhất).

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Sử dụng kiểu dữ liệu SQL CHAR(60) để lưu trữ mã hóa băm Bcrypt này. Lưu ý rằng hàm này không mã hóa dưới dạng một chuỗi các chữ số thập lục phân, vì vậy chúng tôi không thể dễ dàng lưu trữ nó ở dạng nhị phân.

Các hàm băm khác vẫn có công dụng, nhưng không phải để lưu trữ mật khẩu, vì vậy tôi sẽ giữ nguyên câu trả lời ban đầu bên dưới, được viết vào năm 2008.

Nó phụ thuộc vào thuật toán băm bạn sử dụng. Việc băm luôn tạo ra kết quả có cùng độ dài, bất kể đầu vào là gì. Nó là điển hình để biểu diễn kết quả băm nhị phân trong văn bản, dưới dạng một chuỗi các chữ số thập lục phân. Hoặc bạn có thể sử dụng UNHEX() hàm để giảm một nửa chuỗi chữ số hex.

  • MD5 tạo ra một giá trị băm 128 bit. Bạn có thể sử dụng CHAR (32) hoặc BINARY (16)
  • SHA-1 tạo giá trị băm 160 bit. Bạn có thể sử dụng CHAR (40) hoặc BINARY (20)
  • SHA-224 tạo ra một giá trị băm 224 bit. Bạn có thể sử dụng CHAR (56) hoặc BINARY (28)
  • SHA-256 tạo giá trị băm 256 bit. Bạn có thể sử dụng CHAR (64) hoặc BINARY (32)
  • SHA-384 tạo giá trị băm 384 bit. Bạn có thể sử dụng CHAR (96) hoặc BINARY (48)
  • SHA-512 tạo giá trị băm 512 bit. Bạn có thể sử dụng CHAR (128) hoặc BINARY (64)
  • BCrypt tạo ra một giá trị băm 448 bit phụ thuộc vào việc triển khai. Bạn có thể cần CHAR (56), CHAR (60), CHAR (76), BINARY (56) hoặc BINARY (60)

Kể từ năm 2015, NIST khuyến nghị sử dụng SHA-256 hoặc cao hơn cho bất kỳ ứng dụng nào của hàm băm yêu cầu khả năng tương tác. Nhưng NIST không khuyên bạn nên sử dụng các hàm băm đơn giản này để lưu trữ mật khẩu một cách an toàn.

Các thuật toán băm nhỏ hơn có các công dụng của chúng (như nội bộ của một ứng dụng, không phải để trao đổi), nhưng chúng là không xác định được là có thể bẻ khóa .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ví dụ về Spring Boot CRUD với MySQL

  2. MySQL so với PDO

  3. Sử dụng NẾU TỒN TẠI của MySQL

  4. Tham khảo:Mẫu mã hoàn hảo sử dụng phần mở rộng MySQL là gì?

  5. SQLSTATE [HY000] [2002] Cố gắng kết nối không thành công .. - Khi cố gắng kết nối từ Máy chủ cục bộ đến máy chủ từ xa