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

Ướp muối băm của tôi với PHP và MySQL

Trước hết, DBMS (MySQL) của bạn không cần phải có bất kỳ hỗ trợ nào cho các hàm băm mật mã. Bạn có thể làm tất cả những điều đó về phía PHP và đó cũng là điều bạn nên làm.

Nếu bạn muốn lưu trữ muối và băm trong cùng một cột, bạn cần phải nối chúng với nhau.

// the plaintext password
$password = (string) $_GET['password'];

// you'll want better RNG in reality
// make sure number is 4 chars long
$salt = str_pad((string) rand(1, 1000), 4, '0', STR_PAD_LEFT);

// you may want to use more measures here too
// concatenate hash with salt
$user_password = sha512($password . $salt) . $salt;

Bây giờ, nếu bạn muốn xác minh mật khẩu, bạn thực hiện:

// the plaintext password
$password = (string) $_GET['password'];

// the hash from the db
$user_password = $row['user_password'];

// extract the salt
// just cut off the last 4 chars
$salt = substr($user_password, -4);
$hash = substr($user_password, 0, -4);

// verify
if (sha512($password . $salt) == $hash) {
  echo 'match';
}

Bạn có thể muốn xem phpass , cũng sử dụng kỹ thuật này. Đây là một giải pháp băm PHP sử dụng muối trong số một số thứ khác.

Bạn chắc chắn nên xem câu trả lời cho câu hỏi mà WolfOdrade liên kết với.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Group_Concat trong Concat không hoạt động với giá trị NULL

  2. Bảng nối bên trong liên quan đến giá trị lớn nhất

  3. Cân bằng tải MySQL &MariaDB với ProxySQL

  4. bảng tiếp theo không có cột 'id'

  5. Sự khác biệt giữa Mã hóa và đối chiếu?