跳到主要内容

aes_decrypt:AES解密

速查结论

aes_decrypt(expr, key[, mode[, padding[, aad]]]) 是 Spark SQL 中用于对 AES 加密的二进制数据进行解密的加密函数。

语法

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

参数说明

参数类型说明
exprBINARY要解密的二进制值。
keySTRING用于解密数据的密码短语。支持的密钥长度为 16、24 和 32 字节。
modeSTRING可选。指定解密所用的块密码模式。有效值:ECBGCMCBC。默认值为 GCM
paddingSTRING可选。指定填充方式。有效值:PKCSNONEDEFAULTDEFAULT 表示 ECB 和 CBC 模式使用 PKCS,GCM 模式使用 NONE
aadBINARY可选。附加认证数据(AAD),仅 GCM 模式支持。如果加密时提供了 AAD,解密时必须提供相同的值。

示例

> SELECT aes_decrypt(unhex('83F16B2AA704794132802D248E6BFD4E380078182D1544813898AC97E709B28A94'), '0000111122223333');
Spark
> SELECT aes_decrypt(unhex('6E7CA17BBB468D3084B5744BCA729FB7B2B7BCB8E4472847D02670489D95FA97DBBA7D3210'), '0000111122223333', 'GCM');
Spark SQL
> SELECT aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='), '1234567890abcdef', 'ECB', 'PKCS');
Spark SQL
> SELECT aes_decrypt(unbase64('2NYmDCjgXTbbxGA3/SnJEfFC/JQ7olk2VQWReIAAFKo='), '1234567890abcdef', 'CBC');
Apache Spark
> SELECT aes_decrypt(unbase64('AAAAAAAAAAAAAAAAAAAAAPSd4mWyMZ5mhvjiAPQJnfg='), 'abcdefghijklmnop12345678ABCDEFGH', 'CBC', 'DEFAULT');
Spark
> SELECT aes_decrypt(unbase64('AAAAAAAAAAAAAAAAQiYi+sTLm7KD9UcZ2nlRdYDe/PX4'), 'abcdefghijklmnop12345678ABCDEFGH', 'GCM', 'DEFAULT', 'This is an AAD mixed into the input');
Spark

常见报错与避坑指南

  • 密钥长度不匹配:AES 解密要求密钥长度为 16、24 或 32 字节。如果密钥长度不正确,解密将失败并报错。请确认密钥长度与加密时一致。
  • 模式与填充组合限制:支持的模式和填充组合为 (ECB, PKCS)、(GCM, NONE) 和 (CBC, PKCS)。使用不支持的组合将导致错误。
  • AAD 必须一致:如果加密时使用了 AAD(仅 GCM 模式),解密时也必须提供完全相同的 AAD 值,否则解密将失败。如果不需要错误抛出机制,可考虑使用 try_aes_decrypt

Since: 3.3.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

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

交流微信二维码

你可能还想看