- Tạo CSDL BanHang chứa bảng KhachHang:
Bảng KhachHang gồm các cột IdKhachHang, TenKhach, DiaChi, SoThe. Trong đó cột SoThe lưu thông tin số thẻ tín dụng của khách hàng, thông tin này sẽ được mã hóa khi đưa vào CSDL.
Có thể tạo bảng KhachHang bằng lệnh như sau:
IdKhachHang int NOT NULL IDENTITY(1,1) PRIMARY KEY, TenKhach varchar(50) NOT NULL,
DiaChi varchar(50) NOT NULL, SoThe varbinary(2000) NOT NULL)
- Xây dựng thủ tục mã hóa dữ liệu:
Tạo các khóa: Khóa chủ CSDL, Khóa đối xứng để mã hóa dữ liệu khi đưa vào CSDL, Chứng chỉ để bảo vệ Khóa đối xứng đó. Thực hiện bằng lệnh như sau:
CREATE CERTIFICATE ChungChiBaoVe WITH SUBJECT = 'De bao ve khoa doi xung'; CREATE SYMMETRIC KEY khoa_SoThe WITH ALGORITHM = AES_256,
KEY_SOURCE = '4frT-7FGHFDfTh98#6erZ3dq#«', IDENTITY_VALUE = 'l·Fg{(ZEfd@23fz4fqeRHY&4efVql' ENCRYPTION BY CERTIFICATE ChungChiBaoVe;
- Mã hóa dữ liệu khi đưa vào CSDL:
Khi đưa dữ liệu vào CSDL, thực hiện mã hóa thông tin về số thẻ tín dụng của khách hàng. Thực hiện bằng lệnh như sau:
INSERT INTO dbo.KhachHang (TenKhach, DiaChi, SoThe)
VALUES ('Tran Tien Hung', 'Ha Noi', EncryptByKey(Key_Guid('khoa_SoThe'), '1234567887654321') );
INSERT INTO dbo.KhachHang (TenKhach, DiaChi, SoThe) VALUES ('Nguyen Manh Tien', 'Ha Noi',
EncryptByKey(Key_Guid('khoa_SoThe'), '2345678118765432') ); INSERT INTO dbo.KhachHang (TenKhach, DiaChi, SoThe)
VALUES ('Dao Thi Ha', 'Ha Noi', EncryptByKey(Key_Guid('khoa_SoThe'), '3456781221876543') );
INSERT INTO dbo.KhachHang (TenKhach, DiaChi, SoThe) VALUES ('Nguyen Tuan Hung', 'Ha Noi',
VALUES ('Ha Ngoc Anh', 'Ha Noi', EncryptByKey(Key_Guid('khoa_SoThe'), '5678123443218765') );
Khi xem dữ liệu mà không thực hiện giải mã, thông tin về số thẻ tín dụng của khách hàng sẽ được che giấu như hiển thị dưới đây:
- Thực hiện giải mã để xem dữ liệu
Để xem dữ liệu, cần thực hiện giải mã dữ liệu đã được mã hóa. Thực hiện bằng lệnh như sau:
OPEN SYMMETRIC KEY khoa_SoThe DECRYPTION BY CERTIFICATE ChungChiBaoVe;
SELECT IdKhachHang, TenKhach, DiaChi, CAST(DecryptByKey(SoThe) as varchar(50))
FROM dbo.KhachHang;
CLOSE SYMMETRIC KEY khoa_SoThe;