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