

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# AES\_DECRYPT 函数
<a name="AES_DECRYPT"></a>

AES\_DECRYPT 函数用于使用高级加密标准 (AES) 算法解密数据。

## 语法
<a name="AES_DECRYPT-syntax"></a>

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

## 参数
<a name="AES_DECRYPT-arguments"></a>

 *expr*   
要解密的二进制值。

 *密钥*   
用于解密数据的密码。  
密码必须与最初用于生成加密值的密钥相匹配，并且长度必须为 16、24 或 32 字节。

 *mode*   
指定应使用哪种分组密码模式来解密消息。  
有效模式：ECB、GCM、CBC。

 *填充*   
指定如何填充长度不是区块大小的倍数的消息。  
有效值：PKCS、无、默认。  
默认填充表示欧洲央行的 PKCS、GCM 的 NONE 和 CBC 的 PKCS。

 *aad*   
可选的其他经过身份验证的数据 (AAD)。仅支持 GCM 模式。这可以是任何自由格式的输入，并且必须同时用于加密和解密。

## 返回类型
<a name="AES_DECRYPT-return-type"></a>

在带填充的模式下使用 AES 返回解密后的 e *xpr* 值。

## 示例
<a name="AES_DECRYPT-examples"></a>

以下示例演示如何使用 Spark SQL AES\_ENCRYPT 函数使用指定的加密密钥安全地加密一串数据（在本例中为 “Spark” 一词）。然后对生成的密文进行 Base64 编码，使其更易于存储或传输。

```
SELECT base64(aes_encrypt('Spark', 'abcdefghijklmnop'));
  4A5jOAh9FNGwoMeuJukfllrLdHEZxA2DyuSQAWz77dfn
```

以下示例演示了如何使用 Spark SQL AES\_DECRYPT 函数来解密之前已加密和 Base64 编码的数据。解密过程需要正确的加密密钥和参数（加密模式和填充模式）才能成功恢复原始纯文本数据。

```
SELECT aes_decrypt(unbase64('3lmwu+Mw0H3fi5NDvcu9lg=='), '1234567890abcdef', 'ECB', 'PKCS');
 Spark SQL
```