PHP加密技術(shù)

php是現(xiàn)在比較流行的服務(wù)器端軟件,通過php編制的動態(tài)網(wǎng)頁應(yīng)用的十分廣泛,那么我今天就帶大家來了解一下php加密技術(shù)。

一、PHP加密技術(shù)的基本原理

是對原來為明文的文件或數(shù)據(jù)按某種加密算法進行處理,使其成為不可讀的一段代碼,通過這樣的途徑來達到保護數(shù)據(jù)不被非法竊取,閱讀的目的。

二、PHP中對數(shù)據(jù)進行加密的函數(shù)

PHP中對數(shù)據(jù)進行加密的函數(shù)有:crypt(),md5()和shal(),還有加密擴展庫Mcrypt和Mhash。

1、crypt():

可以完成單向加密功能,(無法解密)。

格式:string crypt(string str[,string salt]);

str參數(shù)是需要加密的字符串,salt參數(shù)為加密時使用的干擾串。如省略掉第二個參數(shù),則會隨機生成一個干擾串。

說明:缺省情況下,PHP使用一個2個字符的DES干擾串,如果系統(tǒng)使用的是MD5,則會使用一個12個字符??梢酝ㄟ^CRYPT_SALT_LENCTH變量來查看當(dāng)前所使用的干擾串的長度,該函數(shù)支持4種算加密法和長度。

2、MD5():

格式:string md5(string str[,bool raw_output]);

其中str為要加密的明文,raw_output參數(shù)如果為真,則函數(shù)返回一個二進制形式的密文。默認為false。

3、sha1():

格式:string sha1(string str [,bool raw_output])

說明:函數(shù)返回一個40位的16進制數(shù),如果參數(shù)raw_output為真,則返回一個20位的二進制數(shù)。默認為false。

區(qū)別:相同字符串多次刷新,crypt()加密會出現(xiàn)多個不同效果;MD5()和sha1()效果不會改變。

4、PHP加密擴展庫:

Mcrypt()擴展庫:既能加密又能解密。

安裝Mcrypt()擴展庫:首先把PHP目錄下的libmcrypt.dll文件copy到系統(tǒng)目錄下,然后在php.ini文件中找到";extension=php_mcrypt.dll"將前面的分號去掉,最后重啟服務(wù)器。

Mcrypt()擴展庫常量:支持20多種加密算法和8種加密模式,可以通過函數(shù)mcrypt_list_algorithms()和mcrypt_list_modes()來查看。

Mcrypt應(yīng)用:初始化向量:mcrypt_create_iv(該向量的大小,向量的源(MCRYPT_RAND:取系統(tǒng)的隨機數(shù)))

獲取到初始化向量的大?。簃crypt_create_iv_size(加密算法;加密模式);

加密:mcrypt_encrypt(加密算法,密鑰,需要加密的數(shù)據(jù),算法模式,向量);

解密:mcrypt_decrypt(加密算法,密鑰,需要解密的數(shù)據(jù),算法模式,向量);

5、Mhash擴展庫:

安裝Mhash擴展庫:首先把PHP目錄下的libmhash.dll文件copy到系統(tǒng)目錄下,然后在php.ini文件中找到";extension=php_mhash.dll"將前面的分號去掉,最后重啟服務(wù)器。

Mhash擴展庫常量:Mhash擴展庫支持MD5,SHA1,CRC32等多種散列算法,可以使用mhash_count()和mhash_get_hash_name()函數(shù)輸出支持的算法名稱。

Mhash擴展庫應(yīng)用:獲取文件的全部內(nèi)容:file_get_contents(文件名)。

小知識之php:

PHP,是英文超文本預(yù)處理語言Hypertext Preprocessor的縮寫。PHP 是一種 HTML 內(nèi)嵌式的語言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語言,語言的風(fēng)格有類似于C語言,被廣泛地運用。