MySQL加密算法
1.不可逆加密:
PASSWORD(),ENCRYPT(,),MD5(),SHA5()。
2.可逆的加密算法:
ENCODE(,) DECODE(,):加密解密字符串。该函数有两个参数:被加密或解密的字符串和作为加密或解密基础的密钥。Encode结果是一个二进制字符串,以BLOB类型存储。加密成都相对比较弱。
AES_ENCRYPT(,) AES_DECRYPT(,) :加密解密字符串。该函数有两个参数:被加密或解密的字符串和作为加密或解密基础的密钥。Encode结果是一个二进制字符串,以BLOB类型存储。
加密完成之后可以用TO_BASE64()转成可见字符,然后解密的时候用FROM_BASE64转回来。
例如:
SELECT TO_BASE64(AES_ENCRYPT('HelloWorld','key'));
SELECT AES_DECRYPT(FROM_BASE64('MnD6XDZ0ShCHQ13bP5I6ag=='),'key');
一.加密数据库中的已经存在的数据
-- 使用脚本加密数据库中的数据
UPDATE crm_member
SET phone = (
SELECT
a.mima
FROM
( SELECT TO_BASE64 ( AES_ENCRYPT( ( SELECT phone FROM crm_member WHERE id = 258004 ), 'key' ) ) mima ) a
)
WHERE
id = 258004
1 -- 数据库中已经加密的数据进行解密
2 UPDATE crm_member
3 SET phone = (
4 SELECT
5 a.mima
6 FROM
7 ( SELECT AES_DECRYPT( FROM_BASE64 ( ( SELECT phone FROM crm_member WHERE id = 258004 ) ), 'key' ) mima ) a
8 )
9 WHERE
10 id = 258004