Mã hoá trong SQL Server 2005
Ngu
ồn : quantrimang.com
MA
K
Mã hoá là một phương pháp quan trọng nhằm bảo mật dữ liệu. Những dữ
liệu nhạy cảm như số CMT, số thẻ tín dụng, mật khẩu… cần phải được bảo
vệ trước vô vàn mối nguy hiểm tấn công hiện nay. Trong SQL Server 2000
bạn có thể tự tạo các hàm của riêng mình hoặc sử dụng các DLL ngoài để
mã hoá dữ liệu. Trong SQL Server 2005, các hàm và phương thức này
được mặc định cho phép sẵn.
SQL Server 2005 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
Trong phần đầu của loạt bài này, chúng tôi sẽ giải thích cách sử dụng kỹ thuật
mã hoá bằng mật khẩu và phương pháp giải mã nó.
SQL Server 2005 cung cấp 2 hàm cho việc mã hoá: một cho việc mã hoá và một
cho việc giải mã.
“Mã hoá bằng mật khẩu” là phương pháp mã hoá dữ liệu cơ bản thông qua mật
khẩu. Dữ liệu có thể được giải mã nếu nhập đúng mật khẩu đã sử dụng khi mã
hoá. Chúng ta sẽ thử một ví dụ về việc mã hoá và giải mã dữ liệu bằng kỹ thuật
mã hoá thông qua mật khẩu.
(1 row(s) affected)
EncryptedData
0x01000000C508FB0C4FC7734B47B414D2602A71A338417DD6852291736
84D319334A084CD
Lưu ý
:
“123456789” ở đây có thể là số thẻ tín dụng và “MAK” là mật khẩu
Kết quả của Encryptbypassphrase sau mỗi lần thực thi hàm là khác nhau. Tuy
nhiên, khi bạn giải mã dữ liệu thì nó vẫn ra kết quả như ban đầu trước khi mã
hoá.
Giờ chúng ta sẽ thử giải mã dữ liệu đã được mã hoá ở trên với hàm
DecryptByPassPhrase
select convert(varchar(100),DecryptByPassPhrase('MAK',
0x01000000CBB7EE45B5C1460D6996B149CE16B76C7F7CD598DC56364D1
06B05D47B930093))
select convert(varchar(100),DecryptByPassPhrase('MAK',
0x010000005E884D30C8FF7E4723D4E70A03B0B07F877667BAF1DA9BE1E
116434842D11B99))
select convert(varchar(100),DecryptByPassPhrase('MAK',
0x01000000C508FB0C4FC7734B47B414D2602A71A338417DD6852291736
84D319334A084CD))
Kết quả
123456789
(1 row(s) affected)
go
create database [Customer DB]
go
use [Customer DB]
go
create table [Customer data]
([customer id] int,
[Credit Card Number] bigint,
[Social Security Number] bigint)
go
insert into [Customer data] values (1, 1234567812345678,
123451234)
insert into [Customer data] values (2, 1234567812345378,
323451234)
insert into [Customer data] values (3, 1234567812335678,
133451234)
insert into [Customer data] values (4, 1234567813345678,
123351234)
insert into [Customer data] values (5, 1234563812345678,
123431234)
go
Tạo hai cột để lưu dữ liệu đã được mã hoá
use [Customer DB]
go
alter table [Customer Data] add
[Encrypted Credit Card Number] varbinary(MAX)
go
alter table [Customer Data] drop column [Social Security
Number]
go
Truy vấn bảng theo các lệnh sau (hình 2)
use [Customer DB]
go
select * from [customer data]
go