4. Xây dựng giải pháp cho phép trưởng dự án mã hóa thông tin chi tiêu của dự án của mình và chỉ cho phép một số người dùng nhất định giải mã thông tin này. - ATBMHTTT-2017/lab02-lab02-1412310-1412348-1412362 GitHub Wiki
Giải pháp:
- Xây dựng package mã hóa, giải mã:
Ở đây sử dụng gói CRYPT_UTIL và phương pháp mã hóa được lựa chọn trong gói CRYPT_UTIL là 3DES.
Gói này gồm 3 hàm như sau:
-
Crypt() – thực hiện việc mã hóa
-
Get_key() – thực hiện sinh khóa
-
Dcrypt() – thực hiện việc giải mã
- Quá trình mã hóa dữ liệu:
Tạo thêm cột soTien_Ecr mới trong bảng ChiTieu để lưu thông tin số tiền sau khi mã hóa. Sau đó tiến hành xóa cột soTien cũ.
Tạo bảng ChiTieu_Key:
CREATE TABLE ChiTieu_Key (
maChiTieu NCHAR(10),
Key RAW(255),
primary key (maChiTieu)
);
để lưu các khóa mã hóa cho mỗi ô số tiền.
Viết các thủ tục stored procedure để thực hiện các thao tác insert, update, delete dữ liệu và gọi hàm mã hóa để thực hiện mã hóa dữ liệu.
- Giải mã dữ liệu:
Viết thủ tục stored procedure và gọi hàm giải mã đã viết trong package để thực hiện việc giải mã cột số tiền:
create or replace procedure ChiTieu_Dcr_SP
is
begin
update ChiTieu
set soTien_Ecr = (select crypt_util.dcrypt(c.soTien_Ecr, k.key)
from ChiTieu c, ChiTieu_Key k
where c.maChiTieu = k.maChiTieu);
end;