出處:http://note.tcc.edu.tw/372.html
加解密有分為單向和雙向,能再加加密值用key解回明文的是雙向,只能加密的是單向。大家比較耳熟能詳的 md5 和 sha等就是單向的,其實我們可以直接利用mysql提供的加解密函式來更靈活的操作:
[單向加密]
1. MD5-- 長32個字元,以下範例插入一個加密的密碼。
INSERT INTO `MEMBER`(`PASSWD`) VALUES ( MD5('1234567') );
2. ENCRYPT-- 這是使用和 Unix 上 encrypt() 相同的函數,產生密文長度為13,他的優點是密文短,可以變動key值,缺點是如果加密的 string 太長,只會取前8個字元:
SELECT encrypt('123456789','thekey');
結果 thKcEYDVzryp. 其中 'thekey' 是稱為 salt 的key值,可以省略,但salt 沒省略時,至少長度>=2
3. PASSWORD-- 這是MySQL預設的加密法,也用在設定使用者的密碼上面。例如設定 root 密碼
USING mysql;
UPDATE `user` SET `Password`=Password('123456789') WHERE `User`='root'; <== 使用這種方法請小心,一ENTER成千古恨
[雙向加密]
雙向中最好用的是 ENCODE 和 DECODE ,會好好用的人必為高人。
他的語法:
ENCODE(str, pass_str)
DECODE(crpty_str, pass_str)
其中 pass_str 是 key 值,這兩個函數使用有二個限制,一就是他的儲存crypt 欄位一定要為 BLOB,因為他加密後是 binary string;另一個限制是他不能拿現有欄位當key值。
沒有留言:
張貼留言