跳到主要内容

try_aes_decrypt:安全AES解密

速查结论

try_aes_decrypt(expr, key[, mode[, padding[, aad]]]) 是 Spark SQL 中用于对 AES 加密数据进行解密,解密失败时返回 NULL 而非抛出错误的加密函数。

语法

try_aes_decrypt(expr, key[, mode[, padding[, aad]]])

参数说明

参数类型说明
exprBINARY要解密的二进制值。
keySTRING用于解密数据的密码短语。支持的密钥长度为 16、24 和 32 字节。
modeSTRING可选。指定解密所用的块密码模式。有效值:ECBGCMCBC。默认值为 GCM
paddingSTRING可选。指定填充方式。有效值:PKCSNONEDEFAULT
aadBINARY可选。附加认证数据(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真题

交流微信二维码

你可能还想看