Thực hiện mã hóa CSDL

Một phần của tài liệu ma hoa csdl trong sql server (Trang 56 - 59)

CHƯƠNG 4 : THIẾT KẾ ỨNG DỤNG

4.9. Thực hiện mã hóa CSDL

Trong bài này, CSDL gồm có 2 bảng là: Salary (bảng thông tin lương)và Employee (bảng thông tin nhân viên). Trong bảng Salary, sẽ thực

hiện mã hóa cột Reward (lương thưởng hàng tháng) và cột Total (tổng lương mà nhân viên nhận được trong một tháng). Bảng Employee sẽ thực hiện mã hóa cột Position (cột thơng tin vị trí của nhân viên trong cơng ty) và cột PostCode (cột mã số thẻ gửi tiền của từng nhân viên).

Để có thể mã hóa được, chúng ta phải tạo ra một khóa DMK để mã hóa các khóa trong CSDL.

IF NOT EXISTS

(SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)

CREATE MASTER KEY ENCRYPTION BY

PASSWORD = 'Stronge@11Password$8#1987' Sau đó tạo ra hai chứng chỉ.

CREATE CERTIFICATE Cert_Encrypt

WITH SUBJECT = 'Encryption database in sql server 2005'; GO

CREATE CERTIFICATE Cert_Manage

WITH SUBJECT = 'Encryption database in sql server 2005'; Sau đó tạo ra một khóa đối xứng để mã hóa dữ liệu.

CREATE SYMMETRIC KEY SSN_Key_01 authorization ManageEmployee WITH ALGORITHM = AES_256

ENCRYPTION BY CERTIFICATE Cert_Encrypt GO

CREATE SYMMETRIC KEY SSN_Key_Manage authorization ManageEmployee

WITH ALGORITHM = AES_256

ENCRYPTION BY CERTIFICATE Cert_Manage

Thực hiện việc mã hóa theo các bước sau, giả sử ta mã hóa các cột Position và PostCode trong CSDL:

Bước 1: Tạo cột để lưu các dữ liệu mã hóa. Cột EPosition để lưu dữ liệu mã hóa của cột Position, cột EPostCode để lưu dữ liệu mã hóa của cột PostCode.

Cụ thể như sau: Go

ALTER TABLE thuyan.Employee ADD EPosition varbinary(256) ALTER TABLE thuyan.Employee ADD EPostCode varbinary(256)

Bước 2: Ta tạo một procedure khơng tham số có tên là sp_EPostCode để thực hiện việc mã hóa cột PostCode. Khai báo một con trỏ để đọc từng bản ghi của bảng.

-- THUC HIEN MA HOA CAC COT CUA Employee create proc EEmployee

with encryption as

begin

declare @Position varchar(50); declare @PostCode varchar(50);

declare cusor1 Cursor for select Position,PostCode from thuyan.Employee;

open cusor1;

OPEN SYMMETRIC KEY SSN_Key_01

DECRYPTION BY CERTIFICATE Cert_Encrypt OPEN SYMMETRIC KEY SSN_Key_Manage

DECRYPTION BY CERTIFICATE Cert_Manage

fetch next from cusor1 into @Position,@PostCode; while(@@FETCH_STATUS=0)

begin

if ((@Position like'%truong phong%') or (@Position like '%Giam doc'))

begin

update thuyan.Employee set EPosition= ENCRYPTBYKEY(KEY_GUID('SSN_Key_Manage'),@Position), EPostCode= ENCRYPTBYKEY(KEY_GUID('SSN_Key_Manage'),@PostCode) where Position= @Position; end

else update thuyan.Employee set EPosition= ENCRYPTBYKEY (KEY_GUID('SSN_Key_01'),@Position),

EPostCode=

ENCRYPTBYKEY(KEY_GUID('SSN_Key_01'),@PostCode)

where Position= @Position;

fetch next from cusor1 into @Position,@PostCode; end

close cusor1;

DEALLOCATE cusor1;

ALTER TABLE thuyan.Employee DROP COLUMN PostCode; ALTER TABLE thuyan.Employee DROP COLUMN Position; close Symmetric key SSN_Key_01;

close Symmetric key SSN_Key_Manage; END

Tương tự như vậy với cột Position và các cột Reward và Total trong bảng Salary. (xem trong file CSDL ).

Sau khi đã có các giá trị mã hóa trong CSDL. Truy vấn SELECT tới bảng mã hóa (Employee). Kết quả cho ta như sau.

Hình 4.4: CSDL trước khi thực hiện mã hóa

Sau khi thực hiện mã hóa:

Hình 4.5: CSDL sau khi thực hiện mã hóa

Một phần của tài liệu ma hoa csdl trong sql server (Trang 56 - 59)

Tải bản đầy đủ (DOC)

(71 trang)
w