PHP加密函數—crypt()函數加密
在介紹加密函數之前,我們先來介紹一下資料加密原理:就是對原來的明檔案或者資料按照某種演算法進行處理,使其成為不可讀的一段代碼,通常稱之為“密文”,通過這樣的途徑來達到保護資料不被非法竊取和閱讀的目的!
在PHP中能對資料進行加密的函數主要有:crypt()、md5()以及sha1(),還有就是加密擴充庫Mcrpyt和Mash。在這篇文章中,我們先介紹使用crpyt()函數進行加密!
crypt()函數可以完成單向加密功能,是單向字串散列!
crypt()函數文法格式如下:
string crypt ( string $str [, string $salt ] )
| 演算法 |
salt長度 |
| CRYPT_STD_DES |
2-character(預設) |
| CRYPT_EXT_DES |
9-character |
| CRYPT_MD5 |
12-character(以$1$開頭) |
| CRYPT_BLOWFISH |
16-character(以$2$開頭) |
這裡要說明一下:
在預設的情況下,PHP使用一個或者兩個字元的 DES 幹擾串,如果系統使用的是MD5,那麼就會使用 12個字元,可以通過 CRYPT_SALT_LENGTH 變數來查看當前所使用的幹擾串的長度!
crypt()函數執行個體用法:
下面我們使用一個執行個體,讓大家一目瞭然,具體代碼如下:
<?phpheader("Content-Type:text/html; charset=utf-8");$atr = "php中文網 www.php.cn"; //聲明字串變數$atrecho "加密之前atr的值為:".$atr;$atr1 = crypt($atr); //對變數$str 加密echo "<br>加密之後str的值為:".$atr1; //輸出加密後的變數?>
輸出的結果如下:
上面的執行個體執行之後,一直重新整理瀏覽器,你會發現每次產生的加密結果都是不一樣的,那麼該如何進行對加密後的資料進行判斷就成了問題。crypt()函數是單向加密的,密文不可還原成明文的,而且每次加密後的資料都是不同的,這就是 salt 參數要解決的問題了。
crypt()函數用 salt參數對明文進行加密,判斷時,對輸出的資訊再次使用相同的 salt 參數進行加密,對比兩次加密後的結果來進行判斷!
下面的執行個體對輸入使用者名稱進行檢查,具體代碼如下:
<?phpheader("Content-Type:text/html; charset=utf-8");$link=mysqli_connect("localhost","root","");$db_selected = mysqli_select_db($link,"my_db");?> <form name="form1" action="" method="post"> <input type="text" name="username" id="username" size="15"> <input type="submit" name="Submit" value="檢測"> </form><?phpif(isset($_POST["username"])!=""){ $usr=crypt(isset($_POST["username"]),"tm"); //對使用者名稱進行加密 $sql = "select * from tb_user where user = '".$usr."'";//產生查詢語句 $rst = mysqli_query($link,$sql); //執行語句,返回結果集 if($rst){ echo "使用者名稱存在"; }else{ echo "使用者名稱可以使用"; }}?>
輸出結果如下:
下一篇我們將介紹如何使用MD5()函數進行加密,具體請閱讀《PHP加密函數—md5()函數加密》!
【相關推薦】
1. 相關專題推薦:《PHP加密函數》
2.PHP加密函數—md5()函數加密執行個體用法
3.PHP加密函數—sha1()函數加密的執行個體用法
4.PHP加密技術視頻教程