1. 程式人生 > >PHP學習--加密函式

PHP學習--加密函式

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);
?>

結果如下: