首页 » 数据库 » MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密字段实现密码加密功能

MySQL利用AES_ENCRYPT()与AES_DECRYPT()加解密字段实现密码加密功能

高蒙 2019/10/08 14:29 2.9k浏览 0评论 Mysql


在工作中有这样的需求,需要做一个帐号密码管理功能,可以实现密码的加解密。在这里可以使用mysql自带的函数,AES_ENCRYPT()函数将明文加密与AES_DECRYPT()函数将密文解密。

在实际的使用当中,会遇到字符不识别,乱码的问题,当然可以有很多其他的方法可以规避此类问题,这里我建议大家使用我下面的方法。


方法:

将密码使用AES_ENCRYPT()加密成密文,然后用HEX(),对密码进行十六进制,再存入varchar/char列。

在取出密码的时候,先用UNHEX()将密码从十六进制解出,然后在用AES_DECRYPT()将密文解析完成。


实例:

INSERT INTO pwd VALUES (HEX(AES_ENCRYPT('hello world', 'key2')));
SELECT AES_DECRYPT(UNHEX(pass1), 'key2') FROM pwd;

同样,根据明文的长度不同,AES_ENCRYPT加密后的串长度也会有所变化,所以HEX后的字符串长度也会有所变化。

实际使用时,需要据业务评估出一个合理值即可。





相关文章

我有话说

站长昵称:(*)

输入内容:

选个头像:

评论列表

    ...

    高蒙

    男, PHP程序猿

    文章

    492

    标签

    43

    热度

    10w+

    南京, 江苏, 中国

    人生要是没有理想, 那跟咸鱼有什么分别。