徐國(guó)輝
摘 要:PHP語(yǔ)言豐富的內(nèi)置函數(shù)庫(kù)和良好的移植性在網(wǎng)站開(kāi)發(fā)中發(fā)揮了極其重要的作用。本文闡述了PHP數(shù)據(jù)加密技術(shù)和PHP內(nèi)置函數(shù)在開(kāi)發(fā)的WEB頁(yè)面中的安全保障作用。
關(guān)鍵詞:php;加密技術(shù);內(nèi)置函數(shù)
1 PHP語(yǔ)言是當(dāng)前web開(kāi)發(fā)最熱門的語(yǔ)言之一,其豐富的內(nèi)置函數(shù)庫(kù)和良好的移植性在網(wǎng)站開(kāi)發(fā)中發(fā)揮了極其重要的作用。數(shù)據(jù)加密技術(shù)是計(jì)算機(jī)文件傳輸中進(jìn)行安全保護(hù)的一種比較常用的策略,本文闡述了PHP數(shù)據(jù)加密技術(shù)和PHP內(nèi)置函數(shù)在開(kāi)發(fā)的WEB頁(yè)面中的安全保障作用。
2 PHP中常見(jiàn)的加密技術(shù)
2.1 urlencode()函數(shù)加密技術(shù)
PHP通過(guò)GET()方法提交的信息,會(huì)以查詢字符串的形式顯示在瀏覽器的地址欄中,這樣會(huì)給網(wǎng)站的安全帶來(lái)很大的隱患,為了解決這個(gè)問(wèn)題,可以對(duì)查詢字符串進(jìn)行URL編碼。
Php中實(shí)現(xiàn)對(duì)查詢字符串進(jìn)行URL編碼,可以通過(guò)urlencode()函數(shù)實(shí)現(xiàn)。該函數(shù)的使用格式如下:
String urlencode(string str)
該函數(shù)能夠?qū)崿F(xiàn)將字符串str進(jìn)行URL編碼。
下面使用urlencode()函數(shù)對(duì)課酬查詢系統(tǒng)的“登錄”字符串進(jìn)行URL編碼,代碼如下:
接收查詢字符串的值,并應(yīng)用urlencode()函數(shù)對(duì)查詢字符串進(jìn)行編碼,代碼如下:
<?php echo urlencode($_GET[page]); ?> //對(duì)GET方法提交的字符串進(jìn)行URL解碼。
2.2 crypt()函數(shù)加密技術(shù)
在WEB程序開(kāi)發(fā)過(guò)程中,可以應(yīng)用PHP提供的crypt()函數(shù)來(lái)完成加密功能。crypt()函數(shù)是單向的加密函數(shù),無(wú)法解密。經(jīng)過(guò)加密的口令即使被非法獲取,由于不能被還原為明文,也不會(huì)影響網(wǎng)站的安全性。
crypt()函數(shù)的語(yǔ)法格式如下:
string crypt(string str, string [salt])
參數(shù)說(shuō)明:
str:是需要加密的明文字符串。
Salt:是一個(gè)位字串,能夠影響加密的暗碼,進(jìn)一步排除被破解的可能性。默認(rèn)情況下,位字串的長(zhǎng)度為2位。若不使用salt參數(shù),則程序會(huì)自動(dòng)產(chǎn)生干擾串。
下面應(yīng)用crypt()加密函數(shù)對(duì)字符串進(jìn)行加密,代碼如下:
<?php
$userpwd=”abc123”; //定義加密的密碼
$str=substr($userpwd, 0, 2); //計(jì)算位字串的數(shù)值
crypt($userpwd,$str); //使用crypt()函數(shù)進(jìn)行加密
?>
2.3 base64編碼加密技術(shù)
PHP實(shí)現(xiàn)字符串的base64編碼通過(guò)base64_encoded()函數(shù)實(shí)現(xiàn)。該函數(shù)的語(yǔ)法格式如下:
string base64_encode(string data)
參數(shù)data指要進(jìn)行base64編碼的數(shù)據(jù)。該函數(shù)的返回結(jié)果為字符串類型。
PHP實(shí)現(xiàn)對(duì)base64編碼的字符進(jìn)行解碼,通過(guò)base4_decode()函數(shù)實(shí)現(xiàn)。該函數(shù)的語(yǔ)法格式如下:
string base64_ decode(string encoded_data)
參數(shù)encoded_data是指要進(jìn)行base64解碼的字符串。
下面應(yīng)用base64編碼講解加密和解密的過(guò)程,代碼如下:
<?php
$userpwd=”abc123”; //定義加密的密碼
echo base64_encode($userpwd); //返回加密后的值
$userstr= base64_encode($userpwd);
//將加密后的字符賦給變量$userstr
echo base64_decode($userpwd);
//對(duì)加密的字符串進(jìn)行解密
2.4 MD5加密技術(shù)
MD5是在Web應(yīng)用程序中最常用的密碼加密算法之一,它和crypt()函數(shù)一樣也是單項(xiàng)加密的。MD5廣泛用于數(shù)據(jù)加密技術(shù)上,在很多網(wǎng)站中,用戶的密碼是以MD5值的方式保存的,用戶登錄時(shí),程序員把用戶輸入的密碼計(jì)算成MD5值,然后再去和數(shù)據(jù)庫(kù)中保存的MD5值進(jìn)行比較,而程序本身并不“知道”用戶的密碼的真實(shí)值,從而提高了網(wǎng)站的安全性。
md5()函數(shù)用來(lái)計(jì)算字符串的MD5混合值。其語(yǔ)法如下:
String md5(string str);
<?php
$userpwd=”abc123”; //管理員密碼:abc123
$mdpwd=md5($userpwd);
//將管理員密碼通過(guò)md5()函數(shù)加密
?>
3 php數(shù)據(jù)加密技術(shù)的應(yīng)用
本人的課酬查詢系統(tǒng)的管理員登錄模塊就是采用md5()函數(shù)獲取字符串加密后的值。login.php是管理員登錄頁(yè)面,checkinput.php應(yīng)用md5()函數(shù)對(duì)用戶密碼進(jìn)行加密,加密管理員密碼的部分代碼如下:
<?php
class chkinput{
var $name;
var $pwd;
function checkinput()
{
include("conn/conn.php");
$obj=new chkinput(trim($_POST[name]),md5(trim($_POST[pwd])));
$obj->checkinput();?>
login.php核心代碼如下:
function checkinput(form){
if(form.pwd.value==""){
alert("請(qǐng)輸入用戶密碼!");
form.pwd.select();
return(false);
}
}
4 結(jié)束語(yǔ)
加密是在不安全的信息渠道中實(shí)現(xiàn)信息安全傳輸?shù)囊环N重要方法,因此對(duì)數(shù)據(jù)進(jìn)行加密操作是非常重要的。本文對(duì)php中各項(xiàng)加密技術(shù)進(jìn)行詳細(xì)講解,開(kāi)發(fā)人員在應(yīng)用加密技術(shù)時(shí),可根據(jù)情況進(jìn)行選擇性使用。
參考文獻(xiàn):
[1]焦顯偉.基于PHP的信息系統(tǒng)數(shù)據(jù)安全性分析與探討[J].價(jià)值工程,2017,36(35):153-154.
[2]張博.淺析PHP中加密函數(shù)的應(yīng)用[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2012,15(24):195-196.
[3]王小潔.基于RSA算法的PHP網(wǎng)站用戶登錄數(shù)據(jù)加密研究[J].太原學(xué)院學(xué)報(bào)(自然科學(xué)版),2018,36(02):56-59.
廣東省特色創(chuàng)新類項(xiàng)目(自然科學(xué))2017GKTSCX050