摘要:PHP語(yǔ)言廣泛應(yīng)用于WEB互聯(lián)網(wǎng)的開(kāi)發(fā),其豐富的內(nèi)置函數(shù)庫(kù)和良好的移植性在網(wǎng)絡(luò)開(kāi)發(fā)中發(fā)揮了極其重要的作用,加密函數(shù)成功的應(yīng)用于各種PHP程序之中,使相關(guān)數(shù)據(jù)在不安全的信息渠道中得以安全的傳輸,為保證前臺(tái)的網(wǎng)頁(yè)瀏覽與后臺(tái)的用戶管理安全奠定了基礎(chǔ)。本文通過(guò)闡述PHP各類加密函數(shù)在簡(jiǎn)易的登陸頁(yè)面和字符串轉(zhuǎn)換方面的應(yīng)用,著重體現(xiàn)了常見(jiàn)的加密函數(shù)在用PHP開(kāi)發(fā)的WEB頁(yè)面中的重要作用。
關(guān)鍵詞:PHP;密碼;加密函數(shù);網(wǎng)絡(luò)安全
中圖分類號(hào):TP311.52 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9599(2012)24-0195-02
近年來(lái),PHP作為當(dāng)今熱門(mén)的網(wǎng)站程序開(kāi)發(fā)語(yǔ)言廣泛用于動(dòng)態(tài)網(wǎng)站的開(kāi)發(fā),其開(kāi)放的源代碼、跨平臺(tái)性強(qiáng)和面向?qū)ο蟮奶攸c(diǎn)網(wǎng)站開(kāi)發(fā)中得以充分體現(xiàn),而內(nèi)置的加密函數(shù)的應(yīng)用增加了網(wǎng)站的安全系數(shù)。登錄頁(yè)面是所有網(wǎng)站十分簡(jiǎn)單而又必不可少的一部分,而對(duì)用戶密碼加密是所有的程序開(kāi)發(fā)者必須要考慮的因素,無(wú)論是客戶端的用戶還是服務(wù)器端的管理員,都必須考慮其數(shù)據(jù)權(quán)限的分配和相關(guān)數(shù)據(jù)的安全性。
為提高網(wǎng)絡(luò)程序的安全性,在實(shí)際網(wǎng)站的開(kāi)發(fā)過(guò)程中,都要考慮對(duì)用戶注冊(cè)信息的密碼或系統(tǒng)管理員的密碼等相關(guān)數(shù)據(jù)進(jìn)行加密處理,PHP的內(nèi)置函數(shù)中根據(jù)加密效果的需要,通常采用MD5加密方式或運(yùn)用CRYPT()函數(shù)對(duì)相關(guān)信息進(jìn)行單項(xiàng)加密;采用BASE64編碼的技術(shù)實(shí)現(xiàn)對(duì)相關(guān)信息進(jìn)行雙向加密,以確保傳遞信息的安全。
1 PHP中常見(jiàn)的加密函數(shù)
1.1 應(yīng)用MD5()函數(shù)加密。該加密算法是一種常用的加密方法。MD5的全稱是Message-Digest Algorithm 5,Message-Digest通常指的是字節(jié)串的Hash變換,即為把一個(gè)任意長(zhǎng)度的字節(jié)串轉(zhuǎn)換為一定長(zhǎng)度的整數(shù)。
MD5將任意長(zhǎng)度的字節(jié)串變換成一個(gè)128位的大整數(shù),并且是一種不可逆的轉(zhuǎn)換算法,即使我們看到了源程序和算法描述,也無(wú)法將一個(gè)MD5的值變回原來(lái)的字符串,從而保證了原始數(shù)據(jù)的安全。MD5()函數(shù)用來(lái)計(jì)算字符串的MD5混合值。其語(yǔ)法為:
String md5(sting str);用md5()函數(shù)獲取字符串加密后的值,如:
<?php
$str=\"abc\";
$mstr=md5($str);
echo $mstr;//返回字符串加密后的值為“9001509 83cd24fb0d6963f7d28e17f72”
?>
1.2 應(yīng)用CRYPT()函數(shù)加密。該函數(shù)將字符串用UNIX的標(biāo)準(zhǔn)加密模塊DES進(jìn)行加密,是單向的加密函數(shù),每次頁(yè)面刷新后產(chǎn)生的密碼值是不同的,無(wú)法解密。即可以實(shí)現(xiàn)加密一些明碼,但不能將密文重新轉(zhuǎn)換為明碼。其語(yǔ)法為:
String crypt(string str,string [salt]);如果要比對(duì)字符串,將已加密的字符串的頭兩個(gè)字符放在salt的參數(shù)中,再比對(duì)加密后的字符串。其中,參數(shù)str是要被加密的明碼,參數(shù)salt是可選的一個(gè)位字串,能夠影響到加密的暗碼,進(jìn)一步保證了密碼的安全。通常情況下,PHP使用一個(gè)2個(gè)字符的DES干擾串。如果不使用salt參數(shù),則程序會(huì)自動(dòng)產(chǎn)生干擾串,如:
<?php
$str=\"abc\";
$mstr=crypt($str);
echo $mstr;//返回字符串加密后的值為“$1$L60.2M1.$WWfXPw/SnRFGtTdnMVVdc.”
?>
2 加密技術(shù)在程序中的應(yīng)用
在常見(jiàn)的WEB網(wǎng)站中,登錄頁(yè)面是必不可少的,用戶登錄的密碼安全性要求自然不低。在以下常見(jiàn)的登錄頁(yè)面設(shè)計(jì)中,通過(guò)MD5(),CRYPT()和BASE64編碼的方式對(duì)用戶的密碼進(jìn)行加密處理,著重體現(xiàn)PHP中加密技術(shù)在在常見(jiàn)的網(wǎng)絡(luò)程序的具體應(yīng)用。以登錄用戶密碼的加密為例來(lái)分析加密函數(shù)在獲取用戶信息中的加密處理應(yīng)用。
2.1 通過(guò)crypt()函數(shù)加密
建立displaycrypt.php,其代碼的前半部分通過(guò)post方法獲取用戶的用戶名和密碼信息同displaymd5.php中的一樣,其后半部分的核心代碼為:
<?php
echo\"用戶名:$username\";//輸出用戶名
echo\"
\";//輸出換行
echo\"密碼已經(jīng)過(guò)crypt()函數(shù)加密結(jié)果是:\";
echo\"
\";
echo\"\"
?> 再將login.html中form標(biāo)記的action屬性取值為displaycrypt.php, 運(yùn)行l(wèi)ogin.html,用戶名輸入為“張三”,密碼輸入為“123456”,運(yùn)行結(jié)果則為圖2-1所示。
2.2 通過(guò)base64編碼加密
建立displaybase64.php, 其后半部分的核心代碼為:
<?php
echo\"用戶名:$username\";//輸出用戶名
echo\"
\";//輸出換行
echo\"\";//輸出密碼(base64加密處理后的結(jié)果)
?> 再將login.html中form標(biāo)記的action屬性取值為displaybase64.php, 運(yùn)行l(wèi)ogin.html,用戶名輸入為“張三”,密碼輸入為“123456”,運(yùn)行結(jié)果則為圖2-2所示。
圖2-1 密碼經(jīng)過(guò)crypt()函數(shù)處理
圖2-2 密碼經(jīng)過(guò)base64編碼處理
3 加密技術(shù)的應(yīng)用比較
總體上來(lái)講,MD5廣泛用于數(shù)據(jù)加密技術(shù)上,在大
多數(shù)企業(yè)商業(yè)網(wǎng)站中用戶的密碼的值都是經(jīng)過(guò)MD5的方式加密以后而保存在數(shù)據(jù)庫(kù)中的。而用戶在登錄的過(guò)程中,程序需要把用戶的密碼轉(zhuǎn)換成MD5加密處理以后的值和存儲(chǔ)在原始數(shù)據(jù)庫(kù)的MD5的值進(jìn)行比較,而程序的本身并不關(guān)注用戶的密碼的真實(shí)性,該項(xiàng)技術(shù)尤其是在在線投票系統(tǒng)及企業(yè)的商務(wù)網(wǎng)站中,對(duì)用戶的真實(shí)性身份進(jìn)行加密處理。
在實(shí)際WEB開(kāi)發(fā)的過(guò)程中,通過(guò)CRYPT()函數(shù)對(duì)用戶的密碼等相關(guān)信息進(jìn)行加密也被得以廣泛的應(yīng)用,作為單向加密方式,即使加密口令落入第三方,由于不能被還原成明碼,也不會(huì)影響網(wǎng)站的安全性,該函數(shù)被廣泛應(yīng)用于各類網(wǎng)站的管理員和會(huì)員的登錄模塊中。
BASE64_ENCODE()和BASE64_DECODE()函數(shù)用于為相關(guān)數(shù)據(jù)進(jìn)行加密和解密,對(duì)密碼的處理是雙向的,廣泛的應(yīng)用于各種論壇中對(duì)用戶的密碼進(jìn)行BASE64編碼和大量的電子商務(wù)系統(tǒng)中對(duì)顧客的訂單號(hào)進(jìn)行BASE64編碼。
參考文獻(xiàn):
[1]李曉飛.淺析PHP加密技術(shù)在網(wǎng)站安全方面的應(yīng)用[J].佳木斯教育學(xué)院學(xué)報(bào),2012(05).
[2]張建標(biāo),劉辰.一種可信P2P網(wǎng)絡(luò)安全模型[J].北京工業(yè)大學(xué)學(xué)報(bào),2008(09)
[3]李陽(yáng),李衛(wèi)平.數(shù)字簽名技術(shù)在電子商務(wù)中的應(yīng)用[J].安陽(yáng)大學(xué)學(xué)報(bào),2003(01).
[4]吳曉剛.PHP網(wǎng)站加密技術(shù)及其應(yīng)用[J].電腦編程技巧與維護(hù),2011(16).
[作者簡(jiǎn)介]張博(1979.8-),男,講師職稱,現(xiàn)任湖北水利水電職業(yè)技術(shù)學(xué)院學(xué)工處副處長(zhǎng),本科學(xué)歷,碩士學(xué)位,研究方向:計(jì)算機(jī)網(wǎng)絡(luò)與大學(xué)生思想政治教育。
計(jì)算機(jī)光盤(pán)軟件與應(yīng)用2012年24期