达梦(DM)数据库存储加密

简介: 讲述DM数据库存储加密中较容易理解的非透明加密

这里主要讲述DM数据库存储加密中比较常用也比较容易理解的非透明加密相关内容。

非透明加密

引用官方的话说:DM 对非透明加密的支持是通过对用户提供加解密接口实现的。用户在使用非透明加密时,需要提供密钥并调用加解密接口。采用非透明加密可以保证个人私密数据不被包括 DBA 在内的其他人获取。

非透明加密通过用户调用存储加密函数来进行,DM 提供了一系列的存储加密函数,还提供了一个数据加密包 DBMS_OBFUSCATION_TOOLKIT。

简单的说:就是DM数据库提供了存储加密函数,用户调用存储加密函数对指定的数据进行加解密操作。

CFALGORITHMSENCRYPT

对指定类型的明文进行加密,并返回密文,密文数据类型和 SRC 类型相同,语法格式

CFALGORITHMSENCRYPT(    SRC VARCHAR/TEXT/CLOB,    ALGORITHM INT,    KEY VARCHAR)

参数说明:

SRC 需要被加密明文的类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

获取当前DM数据库支持的加密算法

SELECT*FROM V$CIPHERS;

image.png

执行加密操作

select CFALGORITHMSENCRYPT('111111',514,'secret key');

image.png

CFALGORITHMSDECRYPT

对密文进行解密,并得到加密前的相同数据类型的明文,语法格式

CFALGORITHMSDECRYPT(    SRC VARCHAR/TEXT/CLOB,    ALGORITHM INT,    KEY VARCHAR)

参数说明:

SRC 需要被解密密文的数据类型

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

执行解密操作

select CFALGORITHMSDECRYPT('9FF46AA8D86FB25ADED775837F400BB5FE',514,'secret key');

image.png

SF_ENCRYPT_BINARY

对 VARBINARY 类型明文进行加密,并返回密文,语法格式

SF_ENCRYPT_BINARY(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被加密的 VARBINARY 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

加密语句

select SF_ENCRYPT_BINARY(0x12345678EF,514,'secret key',NULL);

image.png

SF_DECRYPT_TO_BINARY

对密文进行解密,并得到加密前的 VARBINARY 类型明文,语法格式

SF_DECRYPT_TO_BINARY(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被解密的 VARBINARY 类型密文

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

解密语句

select SF_DECRYPT_TO_BINARY('0x78AAAC21D0A2875AB86DDF16D9E0C063',514,'secret key',NULL);

image.png

SF_ENCRYPT_CHAR

对 VARCHAR 类型明文进行加密,并返回密文,语法格式

SF_ENCRYPT_CHAR(    SRC VARCHAR,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被加密的 CHAR/VARCHAR 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

加密语句

select SF_ENCRYPT_CHAR('111111',514,'secret key',NULL);

image.png

SF_DECRYPT_TO_CHAR

对密文进行解密,并得到加密前的 VARCHAR 类型明文,语法格式

SF_DECRYPT_TO_CHAR(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被解密的 VARBINARY 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

解密语句

select SF_DECRYPT_TO_CHAR('0x9FF46AA8D86FB25ADED775837F400BB5',514,'secret key',NULL);

image.png

SF_ENCRYPT_DATE

对 DATE 类型明文进行加密,并返回密文,语法格式

SF_ENCRYPT_DATE(    SRC DATE,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被加密的 DATE 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

加密语句

select SF_ENCRYPT_DATE(cast('2023-11-11'ASDATE),514,'secret key',NULL);

image.png

SF_DECRYPT_TO_DATE

对密文进行解密,并得到加密前的 DATE 类型明文,语法格式

SF_DECRYPT_TO_DATE(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被解密的 VARBINARY 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

解密语句

select SF_DECRYPT_TO_DATE('0x67331E1603728F30CA76DC3B4C77A028',514,'secret key',NULL);

image.png

SF_ENCRYPT_DATETIME

对 DATETIME 类型明文进行加密,并返回密文,语法格式

SF_ENCRYPT_DATETIME(    SRC DATETIME,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被加密的 DATETIME 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

加密语句

select SF_ENCRYPT_DATETIME(cast('2023-11-11 11:11:11'ASdatetime),514,'secret key',NULL);

SF_DECRYPT_TO_DATETIME

对密文进行解密,并得到加密前的 DATETIME 类型明文,语法格式

SF_DECRYPT_TO_DATETIME(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被加密的 DATETIME 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

解密语句

select SF_DECRYPT_TO_DATETIME ('0xF46D6469B5958A4D04C96948F8F9428C',514,'secret key',NULL);

image.png

SF_ENCRYPT_DEC

对 DEC 类型明文进行加密,并返回密文,语法格式

SF_ENCRYPT_DEC(    SRC DEC,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被加密的 DEC 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

加密语句

select SF_ENCRYPT_DEC(cast('3.1415900000'AS dec(15,8)),514,'secret key',NULL);

image.png

SF_DECRYPT_TO_DEC

对密文进行解密,并得到加密前的 DEC 类型明文,语法格式

SF_DECRYPT_TO_DEC(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被解密的 VARBINARY 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

解密语句

select SF_DECRYPT_TO_DEC ('0xE19597CBA4C0EAA4437454BB12041A49',514,'secret key',NULL);

image.png

SF_ENCRYPT_TIME

对 TIME 类型明文进行加密,并返回密文,语法格式

SF_ENCRYPT_TIME(    SRC TIME,    ALGORITHM INT,    KEY VARCHAR,    IV VARCAHR
)

参数说明:

SRC 需要被加密的 TIME 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

加密语句

select SF_ENCRYPT_TIME(cast('11:11:11'AStime),514,'secret key',NULL);

image.png

SF_DECRYPT_TO_TIME

对密文进行解密,并得到加密前的 TIME 类型明文,语法格式

SF_DECRYPT_TO_TIME(    SRC VARBINARY,    ALGORITHM INT,    KEY VARCHAR,    IV VARCHAR)

参数说明:

SRC 需要被解密的 VARBINARY 类型数据

ALGORITHM 加密算法 ID,不可以为 NULL。加密算法对应的 ID 可通过查询 V$CIPHERS 得到

KEY 采用的密钥,不可以为 NULL

IV 采用的初始化矢量,可以为 NULL

解密语句

select SF_DECRYPT_TO_TIME ('0x8EEFEE4328CE85853D81179C8D17EA87',514,'secret key',NULL);

image.png

SF_GET_CIPHER_NAME

根据加密算法 ID,获取加密算法的名称

SF_GET_CIPHER_NAME(  CIPHER_ID ININT)

参数说明:

CIPHER_ID 加密算法 ID

获取加密算法名称语句

select SF_GET_CIPHER_NAME(514);

image.png

到这里,关于DM数据库常用的加密函数,也就是半透明加密方式也就说完了。

相关文章
|
5月前
|
存储 前端开发 数据安全/隐私保护
如何使用 Pinia 插件来实现状态的加密存储?
如何使用 Pinia 插件来实现状态的加密存储?
445 123
|
5月前
|
存储 算法 前端开发
如何使用 Vuex 插件来实现状态的加密存储?
如何使用 Vuex 插件来实现状态的加密存储?
338 124
|
7月前
|
存储 Oracle 关系型数据库
服务器数据恢复—光纤存储上oracle数据库数据恢复案例
一台光纤服务器存储上有16块FC硬盘,上层部署了Oracle数据库。服务器存储前面板2个硬盘指示灯显示异常,存储映射到linux操作系统上的卷挂载不上,业务中断。 通过storage manager查看存储状态,发现逻辑卷状态失败。再查看物理磁盘状态,发现其中一块盘报告“警告”,硬盘指示灯显示异常的2块盘报告“失败”。 将当前存储的完整日志状态备份下来,解析备份出来的存储日志并获得了关于逻辑卷结构的部分信息。
|
10月前
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
5月前
|
数据库
【赵渝强老师】达梦数据库实例的状态
达梦数据库实例包含NORMAL、PRIMARY和STANDBY三种模式,以及MOUNT、OPEN和SUSPEND三种状态。模式之间可在MOUNT状态下相互转换,不同状态与模式适用于数据库的启动、配置及运行需求。
345 1
|
5月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
8月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
557 3
Jasypt加密数据库配置信息
|
8月前
|
存储 关系型数据库 数据库
高性能云盘:一文解析RDS数据库存储架构升级
性能、成本、弹性,是客户实际使用数据库过程中关注的三个重要方面。RDS业界率先推出的高性能云盘(原通用云盘),是PaaS层和IaaS层的深度融合的技术最佳实践,通过使用不同的存储介质,为客户提供同时满足低成本、低延迟、高持久性的体验。
|
10月前
|
SQL 存储 分布式数据库
分布式存储数据恢复—hbase和hive数据库数据恢复案例
分布式存储数据恢复环境: 16台某品牌R730xd服务器节点,每台服务器节点上有数台虚拟机。 虚拟机上部署Hbase和Hive数据库。 分布式存储故障: 数据库底层文件被误删除,数据库不能使用。要求恢复hbase和hive数据库。
380 12
|
11月前
|
SQL 缓存 分布式数据库
【赵渝强老师】达梦数据库的线程结构
达梦数据库采用单进程、多线程结构,利用对称服务器架构实现高效资源利用与可扩展性。其核心线程类型包括监听线程(管理客户端连接)、I/O线程(处理数据页读写)、工作线程(执行数据操作)、调度线程(定时任务管理)和日志刷新线程(确保REDO日志刷盘)。通过合理分工与同步机制,达梦数据库实现了高性能与稳定性。视频讲解进一步详细介绍了各线程的功能与协作方式。
325 1
【赵渝强老师】达梦数据库的线程结构