[SQLSERVER] Mã hóa dữ liệu một chiều md5 và mã hóa đối xứng hai chiều trong Sqlserver
Mã hóa là một phương pháp quan trọng nhằm bảo mật dữ liệu. Nếu các bạn có những dữ liệu nhạy cảm như mật khẩu, tài khoản ngân hàng,.. thì trong cơ sở dữ liệu các bạn lưu xuống phải được mã hóa để bảo đảm an toàn dữ liệu trước nguy cơ hack như hiện nay. ...
Mã hóa là một phương pháp quan trọng nhằm bảo mật dữ liệu. Nếu các bạn có những dữ liệu nhạy cảm như mật khẩu, tài khoản ngân hàng,.. thì trong cơ sở dữ liệu các bạn lưu xuống phải được mã hóa để bảo đảm an toàn dữ liệu trước nguy cơ hack như hiện nay.
Nếu bạn là một lập trình viên, các bạn có thể mã hóa trong code trong ngôn ngữ lập trình.
Nhưng bài viết hôm nay, mình xin hướng dẫn các bạn cách mã hóa dữ liệu trực tiếp từ câu truy vấn T-Sql.
SQL Server cung cấp các kỹ thuật sau để mã hoá dữ liệu
-
Mã hoá bằng mật khẩu
-
Mã hoá khoá đối xứng
-
Mã hoá khoá không đối xứng
-
Mã hoá chứng nhận
1. Giới thiệu mã hóa 1 chiều MD5 Trong SQL SERVER:
Như các bạn đã biết, thuật toán mã hóa md5 là mã hóa một chiều, không có thể dịch ngược lại. Và bất kỳ ký tự mã hóa trong md5 cho kết quả tối đa không quá 32 ký tự.
Ví dụ: Bây giờ mình sẽ mã hóa chuỗi "http://laptrinhvb.net" bằng md5 bằng câu lệnh SQL như sau.
SELECT CONVERT(VARCHAR(32), HashBytes('MD5', 'http://laptrinhvb.net'), 2) as md5
kết quả trả về:
2. Giới thiệu hàm mã hóa đối xứng hai chiều trong SQL SERVER.
Mã hóa hai chiều, có nghĩa là khi các bạn mã hóa một chuỗi dữ liệu, các bạn sẽ tạo khóa cho nó.
Khi các các cần giải mã, các bạn chỉ cần nhập khóa vào là có thể giải mã được.
- Hàm mã hóa 2 chiều EncryptByPassPhrase
Bây giờ, mình ví dụ sẽ mã hóa chuỗi "laptrinhvb.net" với khóa là "123".
Vậy câu lệnh sql sẽ là:
select EncryptedData = EncryptByPassPhrase('123', 'laptrinhvb.net' )
Kết quả trả về:
Vậy là mình được kết quả của đoạn mã hóa trên là: 0x0100000075B24804C1A3BB07034DC0D08FDDED5BAD29FA31CD7027A174C28FC0BF4F28A0
- Hàm giải mã 2 chiều DecryptByPassPhrase trong SQL server.
Bây giờ mình sẽ giải mã đoạn chuỗi ví dụ vừa mã hóa ở trên.
select convert(varchar(100),DecryptByPassPhrase('123', 0x0100000075B24804C1A3BB07034DC0D08FDDED5BAD29FA31CD7027A174C28FC0BF4F28A0)) as giaima
Kết quả trả về:
3. Kết luận:
Mã hoá dữ liệu thực sự rất quan trọng. Thông qua bài này chúng tôi đã giới thiệu đến các bạn một trong 4 kỹ thuật mã hoá sẵn có trong SQL Server – kỹ thuật mã hoá bằng mật khẩu – và phương pháp giải mã nó.
HAVE FUN