Dataphin计算任务MaxCompute_sql中,如何使用AES加密函数
问题描述
Dataphin中,需要把MaxCompute的表加密之后传输到其他源或者表中,如何把数据加密或者如何解密?
解决方案
前提条件
购买数据安全增值模块
确保已开通并购买了Dataphin 的“数据安全”相关增值服务模块,该模块提供加密算法支持。
安装项目安全策略包
登录 Dataphin 控制台。
点击治理 > 数据安全。
找到项目安全策略包,选择对应项目并安装所需的策略包(例如包含 AES 加密功能的策略包)。
等待安装成功后继续下一步。
配置密钥管理
在治理 > 数据安全 > 密钥管理页面中注册密钥。
选择密钥类型,选择加解密算法(例如AES)。
设置密钥长度和生成密钥值
记录密钥名称和值,后续 SQL 中会用到。
查看安全算法
例如AES
算法名称
算法类型
功能描述
脱敏示例
实现方式
对应函数/算法
AES原生加密
加密
通用加密算法AES,属于对称加密的一种,使用相同的密钥进行加解密
输入:明文+密钥+参数(可选,加密算法的配置参数)
输出:密文
安全策略算法包
ddAesEncryptOriginal(column,key,mode,padding,iv,encode)
AES原生解密
解密
通用加密算法AES,属于对称加密的一种,使用相同的密钥进行加解密
输入:密文+密钥+参数(可选,解密算法的配置参数)
输出:明文
安全策略算法包
ddAesDecryptOriginal(column,key,mode,padding,iv,encode)
使用 AES 加密函数
Dataphin 提供了内置的加密函数,如:
ddAesEncryptOriginal(column,key,mode,padding,iv,encode):AES 加密ddAesDecryptOriginal(column,key,mode,padding,iv,encode):AES 解密
参数名 | 类型 | 必填 | 说明 |
column |
| 是 | 要加密的数据字段(明文),可以是常量或列名。 |
key |
| 是 | 加密使用的密钥(Key),必须与解密时使用相同的密钥。建议长度为 16、24 或 32 字节(对应 AES-128、AES-192、AES-256)。 |
mode |
| 否 | 指定加密模式,默认为 |
padding |
| 否 | 指定填充方式,默认为 |
iv |
| 否 | 初始化向量(IV),仅当加密模式为 |
encode |
| 否 | 指定加密结果的编码方式,默认为 |
注意:
函数中的参数应为字符串类型。
若密钥未正确配置或权限不足,可能会报错。
加密后的结果通常是 Base64 编码的字符串。
示例 SQL 语句
示例 1:默认参数(ECB + PKCS7 + Base64)
sql-- 示例:AES 加密
SELECT ddAesEncryptOriginal('HelloWorld', 'MySecretKey123') AS encrypted_value;
-- 示例:AES 解密
SELECT ddAesDecryptOriginal('U2FsdGVkX1+/7ZpPjKdNvMxGJHlq...', 'MySecretKey123') AS decrypted_value;示例 2:自定义模式(CBC)+ 自定义 IV + Hex 编码
sqlSELECT ddAesEncryptOriginal(
'HelloWorld',
'MySecretKey123',
'CBC',
'PKCS7',
'InitializationVector123',
'Hex'
) AS encrypted_value;适用于
Dataphin,MaxCompute计算引擎