mysql的AES_DECRYPT的解密函数使用例子如下,DM数据库有AES加密解密函数么?
SELECT HEX(AES_ENCRYPT('623125196001236656', 'abcd@123'));
select AES_DECRYPT(UNHEX('1269A376307F28F5EEA3FEBA64F34F56D39E164654948179591AD081316916D4'),'abcd@123');
先来看一下mysql的加密和解密介绍。这里因为只有部分参数使用到,其它参数作忽略处理。
以下是官方文档翻译摘抄:
此函数使用官方的 AES(高级加密标准)算法解密数据。有关更多信息,请参阅 AES_ENCRYPT()
的描述。
使用 AES_DECRYPT()
的语句对于基于语句的复制来说是不安全的。
AES_ENCRYPT()
和 AES_DECRYPT()
使用官方的 AES(高级加密标准)算法(以前称为“Rijndael”)对数据进行加密和解密。AES 标准支持多种密钥长度。默认情况下,这些函数实现的是 128 位密钥长度的 AES。还可以使用 196 位或 256 位的密钥长度,具体如下。密钥长度在性能和安全性之间需要做权衡。
AES_ENCRYPT()
使用密钥字符串 key_str
对字符串 str
进行加密,并返回包含加密输出的二进制字符串。AES_DECRYPT()
使用密钥字符串 key_str
对加密字符串 crypt_str
进行解密,并返回原始的(二进制)字符串,结果以十六进制格式显示。如果任一函数参数为 NULL
,则该函数返回 NULL
。如果 AES_DECRYPT()
检测到无效数据或错误的填充,它将返回 NULL
。然而,如果输入数据或密钥无效,AES_DECRYPT()
可能会返回非 NULL
的值(可能是垃圾数据)。
DBMS_CRYPTO 包提供加密和解密数据的接口,支持几种工业标准的分组加密、流加密算法和散列算法。分组加密算法包括 ADVANCED ENCRYPTION STANDARD(AES)、 DATA ENCRYPTION STANDARD(DES);流加密算法包括 RC4;散列算法包括 MD5、 SHA-1、SHA-256、 SHA-384、 SHA-512。
select unhex(DBMS_CRYPTO.DECRYPT('1269A376307F28F5EEA3FEBA64F34F56D39E164654948179591AD081316916D4',
DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_ECB + DBMS_CRYPTO.PAD_PKCS5,
hex(RPAD('abcd@123', 16, CHR(0)))));
select DBMS_CRYPTO.ENCRYPT(HEX('623125196001236656'),
DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_ECB + DBMS_CRYPTO.PAD_PKCS5,
hex(RPAD('abcd@123', 16, CHR(0)))) ;
因加密密钥的长度必须足够,这里KEY做了补0处理。
当解密失败时,DM数据库直接报错,Mysql会返回NULL。这里我们使用函数做封装处理。
CREATE OR REPLACE FUNCTION AES_DECRYPT (V_STR VARCHAR2,
V_KEY VARCHAR2)
RETURN VARCHAR2 AS V_RETURN_STR VARCHAR2 (2000);
BEGIN
V_RETURN_STR := unhex(DBMS_CRYPTO.DECRYPT(V_STR, DBMS_CRYPTO.ENCRYPT_AES128+DBMS_CRYPTO.CHAIN_ECB+DBMS_CRYPTO.PAD_PKCS5,hex(RPAD(V_KEY, 16, CHR(0)))));
RETURN V_RETURN_STR;
EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('解密失败,返回 NULL');
RETURN NULL;
END;
SELECT AES_DECRYPT('1269A376307F28F5EEA3FEBA64F34F56D39E164654948179591AD081316916D4', 'abcd@123');
SELECT AES_DECRYPT('52E3400353662D37A126DD9DF95C0902D1884', 'abcd@123');
SELECT AES_DECRYPT('3303234957****0122', 'abcd@123');
测试效果如下。
文章
阅读量
获赞