Dataphin计算任务MaxCompute_sql中,如何使用AES加密函数

更新时间:
复制为 MD 格式

问题描述

Dataphin中,需要把MaxCompute的表加密之后传输到其他源或者表中,如何把数据加密或者如何解密?

解决方案

前提条件

  1. 购买数据安全增值模块

    确保已开通并购买了Dataphin 的“数据安全”相关增值服务模块,该模块提供加密算法支持。

  2. 安装项目安全策略包

    • 登录 Dataphin 控制台。

    • 点击治理 > 数据安全。

    • 找到项目安全策略包,选择对应项目并安装所需的策略包(例如包含 AES 加密功能的策略包)。

    • 等待安装成功后继续下一步。

  3. 配置密钥管理

    • 在治理 > 数据安全 > 密钥管理页面中注册密钥。

    • 选择密钥类型,选择加解密算法(例如AES)。

    • 设置密钥长度和生成密钥值

    • 记录密钥名称和值,后续 SQL 中会用到。

  4. 查看安全算法

    例如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

string

要加密的数据字段(明文),可以是常量或列名。

key

string

加密使用的密钥(Key),必须与解密时使用相同的密钥。建议长度为 16、24 或 32 字节(对应 AES-128、AES-192、AES-256)。

mode

string

指定加密模式,默认为'ECB',可选值包括:'ECB','CBC','CFB','OFB'等。

padding

string

指定填充方式,默认为'PKCS7',可选值包括:'PKCS7','ISO10126','NoPadding'等。

iv

string

初始化向量(IV),仅当加密模式为'CBC','CFB','OFB'时需要提供。IV 需要是 16 字节的字符串。

encode

string

指定加密结果的编码方式,默认为'Base64',可选值包括:'Base64','Hex'等。

注意:

  • 函数中的参数应为字符串类型。

  • 若密钥未正确配置或权限不足,可能会报错。

  • 加密后的结果通常是 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计算引擎