达梦数据库存储加密

本文介绍了DM数据库的存储加密方法,包括透明加密、半透明加密、非透明加密、备份加密及密码算法选择,旨在保护数据文件的安全性。不同的加密方式对性能的影响各异,用户需根据需求选择合适的加密算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为了防止用户直接通过数据文件获取用户信息,DM数据库提供了多种存储加密方法,对数据进行加密,以达到使明文存储为密文的目的。

下文就加密方式、加密算法做个介绍。

1透明加密

在建表时对应加密列使用透明加密模式(AUTO),密钥生成、密钥管理和加解密过程由数据库管理系统自动完成,用户不可见,即用户本身是感受不到数据是经过了加密处理的。经加密存储文件中该列值变为密文。

透明加密操作:
创建用户USER1、USER2,并对这些用户授权,使其拥有对表的操作权限。

以USER1身份登录数据库服务器,创建一张表T1,建立三个列,选中“姓名”列设置列加密属性,选择透明加密,创建表成功,向T1表中的“姓名”列插入数据“Tom”,用二进制编辑工具查看数据文件,数据“Tom”已被加密成密文,是看不到的。
在这里插入图片描述

2半透明加密

在建表时对加密列使用半透明加密模式(MANUAL),加密口令即为创建用户时设置的半透明加密口令(Figure 2),用户可以调用系统函数来设置、获取会话的加密口令,当会话的加密口令与半透明加密口令一致时,才可以看到明文。因此,设置为半透明加密的用户可以看到自己插入的数据,而其他用户是看不到的。
在这里插入图片描述
半透明加密操作:
创建用户USER1、USER2,并对这些用户授权,使其拥有对表的操作权限。

以USER1身份登录数据库服务器,创建一张表T1,建立三个列,选中“部门”列设置列加密属性。分别通过USER1、 USER2用户向表T1各插入一条数据,USER1、USER2只能看到自己插入的数据,彼此的数据互为不可见密文。
在这里插入图片描述

3非透明加密

在读写数据时调用系统加密函数直接对数据进行加解密,该过程需要用户自主完成,所以叫做非透明。具体提供的加密函数,见《DM7_SQL语言使用手册》中“存储加密函数”有详细列表。

非透明加密操作:
直接在SQL语句中使用,如:
在这里插入图片描述

4备份加密

在创建备份的时候,如果勾选“完全数据加密”选项,备份文件就会被加密,使用文本编辑器打开备份文件,查看到的数据都为密文。
在这里插入图片描述

5密码算法选择

DM数据库自带了一些加密算法,如果用户想使用自己的加密算法,只需要使用DM提供的加密引擎接口封装自己的算法(参见《DM7程序员手册》 第11 章DM 加密引擎接口编程指南),并通过create crypto方法来引用对应的引擎文件,然后通过alter crypto方法添加相应的算法即可。

软加密
加密算法可以以软件为载体,存放于动态链接库文件之中。

硬加密
加密算法可以以硬件为载体,存放在加密卡等硬件中,在系统运行时实时进行加解密运算。

6总结

存储加密在保证数据文件安全性的同时,也会带来一定的性能影响,不同的加密算法、加密方式对性能的影响各有不同,用户需要根据自己的需求来决定是否进行加密以及加密算法、加密方式的选择。

达梦数据库中使用 AES 加密,可以通过配置通信加密和字段加密两种方式来实现。以下分别介绍这两种使用方法: ### 1. 配置通信加密 达梦数据库支持通过 SSL 使用 AES 算法对通信进行加密。需要在服务端配置 `ENABLE_ENCRYPT` 和 `COMM_ENCRYPT_NAME` 参数以启用通信加密。例如,可以将 `COMM_ENCRYPT_NAME` 设置为 `AES128_ECB`、`AES128_CBC`、`AES128_CFB` 或 `AES128_OFB` 中的任意一种,客户端会根据服务端配置的加密方式与其通信[^1]。 需要注意的是,如果将 `COMM_ENCRYPT_NAME` 设置为 `AES192_ECB`、`AES192_CBC`、`AES192_CFB`、`AES192_OFB`、`AES256_ECB`、`AES256_CBC`、`AES256_CFB` 或 `AES256_OFB` 时,可能会出现“6061:通信加密协商失败”的错误。为避免此问题,建议优先选择 `AES128` 系列的算法[^2]。 ### 2. 使用字段加密 达梦数据库提供了字段级别的加密功能,支持使用 AES 算法对特定字段进行加密存储。例如,可以使用内置函数 `CFALGORITHMSENCRYPT` 对 `varchar` 类型字段进行加密。该函数包含三个参数:待加密的字段、加密算法编号和加密密钥。使用方法如下: ```sql CFALGORITHMSENCRYPT('test', 514, '测试口令') ``` 其中,`'test'` 是待加密的字段,`514` 表示使用的加密算法(如 AES),`'测试口令'` 是用于加密的密钥[^3]。 此外,还可以使用 `DBMS_CRYPTO` 包进行更灵活的加密和解密操作。例如,使用 `DBMS_CRYPTO.ENCRYPT_AES128`、`DBMS_CRYPTO.CHAIN_ECB` 和 `DBMS_CRYPTO.PAD_PKCS5` 选项组合实现 AES128 加密。解密时可使用 `DBMS_CRYPTO.DECRYPT` 函数,并确保字段值不是 `NULL` 或不符合加密格式的密文[^5]。 ### 3. 支持的加密算法 可以通过查询 `V$CIPHERS` 动态视图获取达梦数据库支持的加密算法列表,以确认当前环境中可用的 AES 加密模式[^1]。 ### 4. SSL 加密组件 如果使用 SSL 进行通信加密,还需要了解其相关组件,包括证书、证书颁发机构(CA)和加密算法。SSL 使用数字证书验证服务器身份,并使用 AES、RSA 等算法加密数据传输[^4]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值