aes_encrypt

aes_encrypt

aes_encrypt介绍

aes_encrypt(expr, key[, mode[, padding[, iv[, aad]]]]) - 使用指定的模式和填充方式,返回 expr 的 AES 加密值。支持的密钥长度为 16、24 和 32 位。支持的模式和填充组合有 ('ECB', 'PKCS')、('GCM', 'NONE') 和 ('CBC', 'PKCS')。CBC 和 GCM 模式支持可选的初始化向量 (IV),这些必须是 16 字节的 CBC 和 12 字节的 GCM。如果没有提供,将生成一个随机向量并添加到输出的前面。GCM 模式仅支持可选的附加认证数据 (AAD)。如果加密时提供了 AAD,则解密时也必须提供相同的 AAD 值。默认模式是 GCM。

Arguments:

  • expr - 要加密的二进制值。
  • key - 用于加密数据的密码短语。
  • mode - 指定加密消息时应使用的块密码模式。有效模式:ECB、GCM、CBC。
  • padding - 指定如何处理长度不是块大小倍数的消息的填充。有效值:PKCS、NONE、DEFAULT。DEFAULT 填充意味着 ECB 模式下使用 PKCS,GCM 模式下使用 NONE,CBC 模式下使用 PKCS。
  • iv - 可选的初始化向量。仅 CBC 和 GCM 模式支持。有效值:无或空字符串。对于 CBC 模式,是 16 字节的数组。对于 GCM 模式,是 12 字节的数组。
  • aad - 可选的附加认证数据。仅 GCM 模式支持。这可以是任何自由形式的输入,并且必须在加密和解密时都提供。

Examples:

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

Since: 3.3.0