try_aes_decrypt:安全AES解密
速查结论
try_aes_decrypt(expr, key[, mode[, padding[, aad]]]) 是 Spark SQL 中用于对 AES 加密数据进行解密,解密失败时返回 NULL 而非抛出错误的加密函数。
语法
try_aes_decrypt(expr, key[, mode[, padding[, aad]]])
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| expr | BINARY | 要解密的二进制值。 |
| key | STRING | 用于解密数据的密码短语。支持的密钥长度为 16、24 和 32 字节。 |
| mode | STRING | 可选。指定解密所用的块密码模式。有效值:ECB、GCM、CBC。默认值为 GCM。 |
| padding | STRING | 可选。指定填充方式。有效值:PKCS、NONE、DEFAULT。 |
| aad | BINARY | 可选。附加认证数据(AAD),仅 GCM 模式支持。 |
示例
> SELECT try_aes_decrypt(unhex('6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'), '0000111122223333', 'GCM');
Spark SQL
> SELECT try_aes_decrypt(unhex('----------468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'), '0000111122223333', 'GCM');
NULL
常见报错与避坑指南
- 与 aes_decrypt 的区别:
try_aes_decrypt()在解密失败时返回 NULL 而不是抛出错误。这在处理可能包含无效加密数据的列时非常有用,可以避免整个查询因个别数据异常而失败。 - NULL 值的业务处理:由于解密失败返回 NULL,在后续处理中需注意 NULL 值的含义——它可能表示解密失败,而非原始数据为空。
Since: 3.5.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
