Tại sao mật khẩu mysql băm nội bộ được lưu với một ngôi sao (dấu sao)?


9

Tôi đã đọc được một số nội bộ của mysql, khi đi qua bảng mysql.user trong trình mysqlbao của tôi , tôi nhận được

mysql> select * from mysql.user limit 1 \G
*************************** 1. row ***************************
                  Host: localhost
                  User: root
              Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B

Mật khẩu rõ ràng được băm, nhưng tại sao nó lại bắt đầu bằng dấu sao (dấu sao)?

Câu trả lời:


7

Ngoài mật khẩu bắt đầu bằng dấu hoa thị, đây là thuật toán cho PASSWORD ()

SET @plaintextpassword = 'whatever password you want';
SELECT CONCAT('*',UPPER(SHA1(UNHEX(SHA1(@plaintextpassword)))));

THÍ DỤ

mysql> SET @plaintextpassword = 'whatever password you want';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT UPPER(SHA1(UNHEX(SHA1(@plaintextpassword)))) PWD_CREATION;
+------------------------------------------+
| PWD_CREATION                             |
+------------------------------------------+
| D09AF2704D843A5E4E84362830C7EC1CEA40DF8A |
+------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT PASSWORD(@plaintextpassword) PWD_FUNCTION;
+-------------------------------------------+
| PWD_FUNCTION                              |
+-------------------------------------------+
| *D09AF2704D843A5E4E84362830C7EC1CEA40DF8A |
+-------------------------------------------+
1 row in set (0.00 sec)

mysql>

Tôi đã học thuật toán này từ lâu từ Thuật toán băm trong MySQL PASSWORD ()


14

Ok, tìm thấy về điều này trong tài liệu chính nó .

Đây là một thay đổi được giới thiệu trong mysql 4.1 để có thể hỗ trợ đồng thời mật khẩu dài hơn 16 ký tự và độ dài mật khẩu mới hơn 40 ký tự. Cột Mật khẩu được tạo dài 41 byte (ký tự) và mật khẩu mới hơn sẽ bắt đầu bằng một bắt buộc *để xác định chúng.

Từ tài liệu :

Băm mật khẩu ở định dạng 4.1 luôn bắt đầu bằng ký tự * *, trong khi mật khẩu ở định dạng trước 4.1 không bao giờ thực hiện.


Đó cũng là dự đoán của tôi. Nhưng nó không giữ được nước. Họ có thể đã kiểm tra độ dài để xem nó có phải là mật khẩu mới so với mật khẩu cũ hay không.
Rick James

3
@Rick James Chắc chắn có thể kiểm tra độ dài, nhưng có các đối số sử dụng ký tự đầu tiên làm "cờ" để cho phép các thay đổi trong tương lai vẫn có thể sử dụng 40 ký tự nhưng thuật toán khác.
Monty Harder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.