PHP學習--加密函式
阿新 • • 發佈:2018-12-16
1.crypt()函式
crypt()函式用於返回使用DES、Blowfish或MD5演算法加密過後的字串,crypt(str,salt)接受2個引數,第1個為需要加密的字串,第2個為鹽值(加密干擾值,如果沒有提供,則預設由PHP自動生成),返回的字串為雜湊的字串或者是一個少於13個字元的字串;
<?php //使用crypt()函式進行加密 $password = 'Cairo960918'; //沒有提供鹽值 echo "加密前:".$password; echo "加密後(無鹽值):".crypt($password); echo "<hr>"; //提供鹽值 $salt = "good"; echo "加密後(有鹽值):".crypt($password,$salt); ?>
加密的字串為“Cairo960918”:
第一次:
重新整理後:
總結:通過重新整理前與重新整理後可以發現,crypt()函式如果沒有鹽值加密後的字串的第2個$與第3個$之間的字串的8個字串是由PHP自動生成的,每重新整理一次就變一次;crypt()函式如果定義了鹽值後,只會擷取鹽值的前2位新增在加密後的字串前且加密後的字串是不變的。
注意:crypt()函式是一種單向演算法,沒有相應的解密函式。PHP新增鹽值預設使用DES加密,如果salt這個字串以$1$開頭,以$結尾則是MD5加密,只會擷取鹽值的前八位新增在加密後的字串前。
2.md5()函式
MD5函式格式:md5(string),返回一個32位的字串,且MD5加密對於大小寫敏感;MD5加密主要應用在校驗網站使用者密碼上,使用者註冊時的密碼經過MD5計算後存入資料庫,當用戶登入時,再把使用者輸入的密碼經過MD5計算後與資料庫中經過MD5加密的字串進行比較。
<?php
//使用md5()函式進行加密
$password = 'Cairo960918';
echo "加密前:".$password;
echo "MD5加密後:".md5($password);
?>
結果如下: