加密函数
这些函数使用 AES(高级加密标准)算法实现数据的加密和解密。
密钥长度取决于加密模式:-128-
、-196-
和 -256-
模式分别为 16
、24
和 32
字节长。
初始化向量的长度始终为 16 字节(超过 16 字节的字节将被忽略)。
aes_decrypt_mysql
引入于:v20.12
解密由 MySQL 的 AES_ENCRYPT
函数加密的数据。
对于相同的输入,产生与 decrypt
相同的明文。
当 key
或 iv
长度超过正常情况时,aes_decrypt_mysql
将遵循 MySQL 的 aes_decrypt
所做的,即“折叠” key
并忽略 IV
的多余位。
支持以下解密模式:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-cfb128
- aes-128-ofb, aes-192-ofb, aes-256-ofb
语法
参数
返回值
返回解密后的字符串。 String
示例
解密 MySQL 数据
aes_encrypt_mysql
引入于:v20.12
以与 MySQL 的 AES_ENCRYPT
函数相同的方式加密文本。
生成的密文可以使用 MySQL 的 AES_DECRYPT
函数解密。
对于相同的输入,产生与 encrypt
函数相同的密文。
当 key
或 iv
长度超过正常情况时,aes_encrypt_mysql
将遵循 MySQL 的 aes_encrypt
所做的,即“折叠” key
并忽略 iv
的多余位。
支持的加密模式包括:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-ofb, aes-192-ofb, aes-256-ofb
语法
参数
mode
— 加密模式。String
plaintext
— 应该被加密的文本。String
key
— 加密密钥。如果密钥长度超过mode
的要求,将执行 MySQL 特定的密钥折叠。String
iv
— 可选。初始化向量。仅考虑前 16 个字节。String
返回值
密文二进制字符串。 String
示例
相等输入比较
使用长密钥时加密失败
MySQL 兼容性
较长的 IV 产生相同的结果
decrypt
引入于:v20.12
该函数使用以下模式解密 AES 加密的二进制字符串:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-ofb, aes-192-ofb, aes-256-ofb
- aes-128-gcm, aes-192-gcm, aes-256-gcm
- aes-128-ctr, aes-192-ctr, aes-256-ctr
- aes-128-cfb, aes-128-cfb1, aes-128-cfb8
语法
参数
mode
— 解密模式。String
ciphertext
— 需要解密的加密文本。String
key
— 解密密钥。String
iv
— 初始化向量。对于-gcm
模式是必需的,其他模式为可选。String
aad
— 附加认证数据。如果此值不正确,则不会解密。仅在-gcm
模式中有效,其他模式抛出异常。String
返回值
返回解密后的明文。 String
示例
正确解密加密数据
错误解密加密数据
encrypt
引入于:v20.12
使用 AES 以以下模式之一将明文加密为密文:
- aes-128-ecb, aes-192-ecb, aes-256-ecb
- aes-128-cbc, aes-192-cbc, aes-256-cbc
- aes-128-ofb, aes-192-ofb, aes-256-ofb
- aes-128-gcm, aes-192-gcm, aes-256-gcm
- aes-128-ctr, aes-192-ctr, aes-256-ctr
- aes-128-cfb, aes-128-cfb1, aes-128-cfb8
语法
参数
mode
— 加密模式。String
plaintext
— 应该被加密的文本。String
key
— 加密密钥。String
iv
— 初始化向量。对于-gcm
模式是必需的,其他模式为可选。String
aad
— 附加认证数据。它不会被加密,但会影响解密。仅在-gcm
模式中有效,其他模式抛出异常。String
返回值
返回二进制字符串密文。 String
示例
示例加密
使用 GCM 模式的示例
tryDecrypt
引入于:v22.10
类似于 decrypt
函数,但当使用错误的密钥时,如果解密失败则返回 NULL
。
语法
参数
mode
— 解密模式。String
ciphertext
— 需要解密的加密文本。String
key
— 解密密钥。String
iv
— 可选。初始化向量。对于-gcm
模式是必需的,其他模式为可选。String
aad
— 可选。附加认证数据。如果此值不正确,则不会解密。仅在-gcm
模式中有效,对于其他模式抛出异常。String
返回值
返回解密后的字符串,如果解密失败则返回 NULL
。 Nullable(String)
示例
创建表并插入数据