Thứ Tư, 4 tháng 9, 2013

Mã hóa và giải mã với ENCRYPTBYPASSPHRASE và DECRYPTBYPASSPHRASE trong SQLSeVer 2005

Giới thiệu:
Bài này mình sẻ hướng dẫn mọi người làm thế nào để mật khẩu và lưu trữ mật khẩu dạng VarBinary sử dụng hàm EncryptByPassPhrase và giải mã sử dụng DecryptByPassPhrase.


Giải thích:
EncryptByPassPhrase sử dụng thuật toán Triple DES để mã hóa text được truyền vào.

Cú pháp: ENCRYPTBYPASSPHRASE('PASSPHRASE',”text”)


Trong cú pháp phía trên 'PASSPHRASE' được xem như là 1 cái khóa bảo mật, và text phải là dữ liệu dạng VarBinary.


Tạo 1 bảng Creating a ' table:

create
 table login_details(uid integer,username varchar(10),password varbinary(100))

Thêm 1 vài record:

insert
 into login_details(uid,username,password)values(1,'smith',EncryptByPassPhrase('12','XXX'))
insert into login_details(uid,username,password)values(2,'kennal',EncryptByPassPhrase('12','YYY'))
insert into login_details(uid,username,password)values(3,'staurt',EncryptByPassPhrase('12','ZZZ'))

Hiển thị các record vừa chèn vào
select * from login_details


DecryptByPassPhrase:  trường được mã hóa có thể được giải mã bởi việc sử dụng DecryptByPassPhrase

Hàm DecryptByPassPhrase nhận vào 2 tham số, 1 là PASSPHRASE  giống như key, 2 là text hoặc tên trường.

select uid,username, DECRYPTBYPASSPHRASE ('12',password) as Password from login_details


Kết quả bên trên mật khẩu vẩn là dạng VarBinary, cho nên chúng ta phải chuyển VarBinary sang dạng Varchar sử  dụng hàm chuyển đổi như sau:

select uid,username,convert(varchar(10), DECRYPTBYPASSPHRASE ('12',password)) as pwdfrom login_details

Không có nhận xét nào:

Đăng nhận xét