达梦数据库的加密

1.透明加密

在透明加密中,密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不
可见。 所以对用户没有影响,用户感知不到。DM 支持的加密算法可通过查询动态视图 V$CIPHERS 得到。
在这里插入图片描述

1.1.全库加密

在初始化数据库的时候加密,可选的参数。

1.2.表空间透明加密

CREATE TABLESPACE <表空间名><数据文件子句>[<数据页缓冲池子句>][<存储加密子句>]
<存储加密子句> ::= ENCRYPT WITH <加密算法>[[BY]<加密密码>] 

注意:如果已指定全库加密,则不再支持表空间加密。

1.3.表列透明加密

DM 支持对表的列进行透明加密,支持建表时设置加密列,以及修改表定义时设置加密列。

CREATE TABLE TEST_ENCRYPT1(C1 INT, C2 INT ENCRYPT);
CREATE TABLE TEST_ENCRYPT2(C1 INT, C2 INT ENCRYPT WITH DES_ECB);
CREATE TABLE TEST_ENCRYPT5(C1 INT, C2 INT ENCRYPT WITH DES_ECB HASH WITH MD5
SALT); 

1.4.其他数据库对象加密

DM 还支持对存储过程、存储函数、 触发器、包、类、自定义类型等的定义进行加密,创建时在对象名称后加上“WITH ENCRYPTION ”即可。
例如,创建存储过程 proc_arg,对其定义进行加密。

CREATE OR REPLACE PROCEDURE proc_arg 
WITH ENCRYPTION(a IN INT, b INT)
AS
BEGIN 
a:=0;
b:=A+1;
END; 

2.半透明加密

创建用户时可以指定存储加密密钥,这个密钥就是为了进行半透明加密时使用的。如果在创建用户时并没有指定存储加密密钥,系统也会自动为用户生成一个默认的加密密钥。
使用半透明加密时,其他用户无法查看加密列信息。
例如:
用czy用户创建表并插入数据:

CREATE TABLE ENC_1(C1 INT, C2 INT ENCRYPT MANUAL);
insert into CZY.ENC_1 VALUES(111,222);
commit;

用czy2用户查看数据:
在这里插入图片描述

可以看到查看不到czy1加密列的内容。这就是半透明加密的效果。

3.非透明加密

DM 对非透明加密的支持是通过对用户提供加解密接口实现的。用户在使用非透明加密时,需要提供密钥并调用加解密接口。采用非透明加密可以保证个人私密数据不被包括DBA 在内的其他人获取
非透明加密通过用户调用存储加密函数来进行, DM 提供了一系列的存储加密函数,还提供了一个数据加密包 DBMS_OBFUSCATION_TOOLKIT。本节主要介绍 DM 的存储加密函数。
例如:
创建一个表并插入数据

create table test (id int,name varchar2(20),sex char(4),ID_CARD char(18),addr VARCHAR2(100),phone char(11),passwd varchar(100));
insert into test values(10001,'曹展羽','23','4202811997********','湖北省武汉市洪山区','1311703****','czy123456');

在这里插入图片描述

对密码列进行加密

update test set passwd=CFALGORITHMSENCRYPT(TEST.passwd, 514, 'miwen');

在这里插入图片描述

对密码进行解密

update test set passwd=CFALGORITHMSDECRYPT(TEST.passwd, 514, 'miwen');

在这里插入图片描述

附:

通过存储过程对密码长度小于20进行加密

create or REPLACE PROCEDURE enc_pass as
DECLARE
CURSOR TEST_CUR IS SELECT * FROM TEST WHERE length(passwd) < 20;
BEGIN
FOR TEST_RECORD IN TEST_CUR LOOP
update test set passwd=CFALGORITHMSENCRYPT(TEST_RECORD.passwd, 514, 'miwen') where id=TEST_RECORD.id;
END LOOP;
EXCEPTION
WHEN NO_DATA_FOUND THEN
dbms_output.put_line('没有需要加密的数据!');
END;
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值