aes_decrypt:AES解密
速查结论
aes_decrypt(expr, key[, mode[, padding[, aad]]]) 是 Spark SQL 中用于对 AES 加密的二进制数据进行解密的加密函数。
语法
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。DEFAULT 表示 ECB 和 CBC 模式使用 PKCS,GCM 模式使用 NONE。 |
| aad | BINARY | 可选。附加认证数据(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真题
