Một số ngôn ngữ kịch bản web, chẳng hạn như ASP cổ điển, không có hàm băm chuỗi gốc – như MD5 hoặc SHA1. Điều này gây khó khăn cho việc băm hoặc mã hóa đầu vào do người dùng cung cấp và thực hiện so sánh chuỗi để so sánh các giá trị băm. Hãy để MySQL thực hiện so sánh chuỗi và tính toán hàm băm cho chúng ta
Mục lục
So sánh chuỗi MD5 trong MySQL
Các ví dụ và mã nói cho chính nó; . MySQL tạo hàm băm MD5 của mật khẩu được cung cấp
Code language: Bash [bash]
mysql -u db-name -p Enter password: ... Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 9950505 Server version: 5.5.32-MariaDB-log MariaDB Server Copyright [c] 2000, 2013, Oracle, Monty Program Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
Code language: SQL [Structured Query Language] [sql]
MariaDB [[none]]> use db-name; Database changed
Code language: SQL [Structured Query Language] [sql]
MariaDB [db-name]> CREATE TABLE `tblUser` [ -> id SMALLINT unsigned NOT NULL auto_increment, -> username VARCHAR[15] NOT NULL UNIQUE, -> password VARCHAR[32], -> active BOOLEAN NOT NULL DEFAULT 1, -> INDEX [id, username, active], -> PRIMARY KEY [id]] engine = InnoDB; Query OK, 0 rows affected [0.04 sec]
Code language: SQL [Structured Query Language] [sql]
MariaDB [db-name]> INSERT `tblUser` [ -> id, -> username, -> password, -> active] -> VALUES [ -> DEFAULT, -> 'admin', -> MD5['password123'], -> 1]; Query OK, 1 row affected [0.00 sec]
Đây là giao diện của
0 của chúng tôi khi nó được bămCode language: SQL [Structured Query Language] [sql]
MariaDB [[none]]> use db-name; Database changed
MariaDB [db-name]> select password from tblUser where username = 'admin'; +----------------------------------+ | password | +----------------------------------+ | 482c811da5d5b4bc6d497ffa98491e38 | +----------------------------------+ 1 row in set [0.00 sec]
Code language: SQL [Structured Query Language] [sql]
Tiếp theo, chúng tôi so sánh hàm băm MD5 của
0 với hàm băm mà MySQL tính toán bằng cách sử dụng. MySQL trả về true hoặc false. Đây là những gì làm cho so sánhCode language: SQL [Structured Query Language] [sql]
MariaDB [[none]]> use db-name; Database changed
Code language: SQL [Structured Query Language] [sql]
MariaDB [db-name]> SELECT IF [ '482c811da5d5b4bc6d497ffa98491e38' = MD5['password123'], 'true', 'false'] AS valid; +-------+ | valid | +-------+ | true | +-------+ 1 row in set [0.00 sec]
Thay đổi cột mật khẩu MySQL cho SHA1
Đối với ví dụ tiếp theo của chúng tôi, để so sánh các hàm băm SHA1 trong MySQL, chúng tôi cần thay đổi cột mật khẩu của mình để hỗ trợ độ dài của hàm băm SHA1
________số 8_______Băm và so sánh SHA1 trong MySQL
So sánh giá trị băm SHA1 trong MySQL
Với cột mật khẩu mới của chúng tôi, chúng tôi có thể thực hiện so sánh chuỗi SHA1, sử dụng. Một lần nữa, MySQL thực hiện tính toán và băm SHA1 cho chúng tôi
Code language: SQL [Structured Query Language] [sql]
MariaDB [db-name]> SELECT password FROM tblUser WHERE username = 'admin'; +------------------------------------------+ | password | +------------------------------------------+ | cbfdac6008f9cab4083784cbd1874f76618d2a97 | +------------------------------------------+ 1 row in set [0.00 sec] MariaDB [db-name]> SELECT IF [ 'cbfdac6008f9cab4083784cbd1874f76618d2a97' = SHA1['password123'], 'true', 'false'] AS valid; +-------+ | valid | +-------+ | true | +-------+ 1 row in set [0.00 sec]
Dễ dàng như vậy. . -]
CHỌN động trong MySQL. cách xác thực băm mật khẩu trong MySQL
Các ví dụ trước không năng động lắm. Chúng tôi vừa sử dụng hàm băm MD5 hoặc SHA1 cho mật khẩu của mình. Nhưng khi tạo phiên đăng nhập trên một trang web, chúng tôi không biết hàm băm và do đó chúng tôi phải chọn nó