MySQL: Mã hóa mật khẩu bằng Thuật toán chuẩn mã hóa nâng cao (AES_ENCRYPT ())

Đây sẽ là một trong những bài viết quan trọng nhất so với hội đồng MySQL vì tôi sẽ san sẻ, thực tiễn tốt nhất của tất cả chúng ta để tàng trữ mật khẩu được mã hóa vào Máy chủ cơ sở tài liệu MySQL. MySQL phân phối thuật toán và công dụng khác nhau để mã hóa và giải thuật tài liệu mật khẩu hoặc bất kể thông tin nhạy cảm nào khác để không ai hoàn toàn có thể truy vấn nó ở định dạng văn bản thuần túy. Đối với những tính năng Mã hóa và Nén khác nhau, bạn hoàn toàn có thể truy vấn website chính thức của Nhà tăng trưởng MySQL này.

Nói chung, mọi người đang sử dụng thuật toán MD5 và SHA để mã hóa mật khẩu, nhưng cả hai đều dễ bị phá vỡ và dễ bị tấn công, vì vậy chúng ta không nên sử dụng thuật toán này trong thực tế chung của mình.

Chúng ta cũng không nên sử dụng hàm PASSWORD () vì nó được sử dụng bởi hệ thống xác thực trong MySQL Server.

Thuật toán chuẩn mã hóa nâng cao (AES):

Đây là một trong những thuật toán mã hóa quan trọng và có tính bảo mật thông tin cao vì nó mã hóa chuỗi bằng cách sử dụng chuỗi khóa mã hóa và trả về đầu ra chuỗi nhị phân được mã hóa. MySQL phân phối AES_ENCRYPT ( ) để mã hóa chuỗi ở định dạng nhị phân và AES_DECRYPT ( ) để giải thuật chuỗi ở dạng văn bản thuần túy.

Vấn đề duy nhất là, tất cả chúng ta nên ẩn giá trị khóa vì mục tiêu bảo mật thông tin bằng cách đặt quyền cấp đối tượng người dùng hoặc tất cả chúng ta hoàn toàn có thể tạo một chính sách xem để ẩn giá trị khóa mã hóa .

Bạn hoàn toàn có thể tạo kiểu tài liệu BINARY hoặc BLOB để tàng trữ mật khẩu được mã hóa AES.

Dưới đây là một minh chứng nhỏ về điều này:

Cú pháp:

12 AES_ENCRYPT ( str, key_str )AES_DECRYPT ( crypt_str, key_str )

Đầu tiên, tạo một bảng với dữ liệu mẫu:

12345678910 CREATE TABLE tbl_AESPassword(ID INTEGER, UserPassword BLOB) ;INSERT INTO tbl_AESPasswordVALUES( 1, AES_ENCRYPT ( ‘ Anvesh ‘, ‘ 8 ‘ ) )

,(2,AES_ENCRYPT(‘Patel’,’88’));

CHỌN hàng đầu tiên bằng cách so sánh mật khẩu sử dụng khóa mã hóa đã xác định:

12345678 SELECT *FROM tbl_AESPasswordWHERE UserPassword = AES_ENCRYPT ( ‘ Anvesh ‘, ‘ 8 ‘ )– Result : Returned only first record .ID | UserPassword—————————1 | BLOB

ĐỂ XÁC ĐỊNH mật khẩu thành văn bản thuần túy:

12345678 mysql > SELECT AES_DECRYPT ( AES_ENCRYPT ( ‘ Anvesh ‘, ‘ 8 ‘ ), ‘ 8 ‘ ) ;+ ——————————————– +| AES_DECRYPT ( AES_ENCRYPT ( ‘ Anvesh ‘, ‘ 8 ‘ ), ‘ 8 ‘ ) |+ ——————————————– +

| Anvesh |

+ ——————————————– +1 row in set ( 0.00 sec )

MySQL: Mã hóa mật khẩu bằng Thuật toán chuẩn mã hóa nâng cao (AES_ENCRYPT ())

Bài viết liên quan
Hotline 24/7: O984.666.352
Alternate Text Gọi ngay