02/10/2018, 00:38

[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:

mã hóa md5 trong sqlserver 2016

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ề:

mã hóa md5 trong sqlserver

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ề:

Mã hóa đối xứng trong sqlserver

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ề:

giai ma doi xung sqlserver

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 laugh

Tags:
0