admin 管理员组

文章数量: 1086019


2024年4月25日发(作者:一个变量的指针是指)

电脑编程技巧与维护 

PHP网站加密技术及其应用 

吴晓刚 

(兴义民族师范学院,贵州兴义562400) 

摘要:随着网络与网站技术的发展,数据加密在企业信息网络中的应用越来越广。针对PHP数据加密的特点, 

探讨了PHP内置的加密函数crypt 0、md5 0以及扩展库一Mcrypt、Mhash在身份验证等网络安全中的应用。 

关键词:PHP;加密技术;身份验证 

The Encryption Technology of PHP for Website and its Application 

WU Xiaogang 

(Dept of Computer Science,Xingyi Normal University for Nationalities,Guizhou Xingyi 562400) 

Abstract:With the development of the Web S technology,the data encryption in the enterprise S information network has 

more and more applications.The PHP built-in encryption function—crypt()、rod5 0 and application of PHP's extension 

library—Mcrypt and Mhash are discussed in authentication and network security. 

Key words:PHP;Encryption technology;Authentication 

数据加密是计算机系统中实施信息保护的一种最可靠的 

方法…。为了保证网络交易和数据传输的安全,数据加密技术 

使用一定的算法对信息进行加密,将明文转变为密文,实现 

Stirng指输入计算的字符串。raw可选,规定十六进制或 

二进制输出格式。 

例:<?php 

Sstrin=“Hello,PHP world!”; 

信息隐蔽,从而起到保护信息安全的作用。动态网站技术 

PHP脚本语言提供的一系列安全功能,主要探讨了PHP内置 

的加密与编码技术及其在网站安全中的应用。 

¥out=rod5(¥strin); 

print”输出:¥out”: 

?> 

1 PHP加密与编码函数 

PHP提供了单向加密crypt 0、散列MD5、数据编码与解 

码base64

encode/base64

decode等内置函数[21。 

结果输出:7996b5e0804042fd53 1907a4900f190e 

1.3 base64

_

encode与base64一decode 

_

1.1 crypt 0函数及用法 

base64

_

encode 0返回使用base64对数据的编码。这种 

crypt()函数是个单向加密函数,可以将明码转换为密 

编码是为了使二进制数据可以通过非纯8_bit的传输层传输, 

例如电子邮件的主体。base64一encoded数据妥比原始数据多 

占用33%左右的空间。 

码,即使加密后的口令落入第二三方,由于其单向性,不能被 

还原为明文,所以保证了口令的安全。在用户输入口令时采 

用此单向算法与存储在服务器上经加密后的口令匹配,来判 

函数格式:stirng base64一encode(stirng¥data) 

例:<?php 

¥str=- This is an encoded string ; 

echo base64

encode(Sstr); 

_

断用户口令是否正确。 

crypt()函数格式:string crypt(stirng input,stirng【, 

stirng salt]) 

?> 

其中参数input_stirng指需要加密的字符串,参数salt是 

可选的一个位字串,用于增加被编码字符数目的字符串,以 

使编码更加安全,如果未提供salt参数,则每次调用该函数 

时会随机生成一个。 

例:<?php 

echo”Standard DES:”.crypt(”hello world”).”

>”: 

输出:VGhpcyBpcyBhbiBlbmNvZGVklHN0cmluZw== 

2 PHP加密与身份验证技术 

身份验证与加密算法是Web中最常见安全技术,PHP内 

置了身份验证141的功能。以下介绍几种基本的身份验证与加 

<br/ 

密方法。 

2.1用crypt 0实现用户身份验证 

使用PHP脚本程序对文件目录进行访问控制,只允许正 

确的用户名和口令的用户访问。数据库MySQL中创建一个 

members表: 

mysql>CREATE TABLE members( 

?> 

输出:Standard DES:¥15r35.Y52.¥iyiFuvM.zFGsscpU0aZ4e. 

1.2 MD5散列函数 

MD5散列函数输出“消息摘要”[31,用来检查文件的完整 

性、数字签名验证、用户身份验证等。PHP内置的md5 0散 

列函数将一个可变长度的信息转换为128位(32个字符)的 

消息摘要。 

语法:md5(stirng,raw) 

作者简介:吴晓刚(1970一),男,讲师,硕士,研究方向 

信息安全与密码学。 

收稿日期:2011-06—10 

与雏 

COMPUTING SECURITY TECHNIQUES 

计算机安全技术 

header(‘HTTP/1.0 401 Unauthorized’); 

exit; 

>username CHAR(14)NOT NULL, 

>password CHAR(32)NOT NULL, 

>PRIMARY KEY(usemame) 

>); 

} 

if(!isset(¥_SERVER【‘PHP—AUTH_USER’】))f 

authenticate

user(); 

_

用户名和密码数据已经存储在该表中,并且加密的口令 

对应其明码。根据口令的前2个字母创建干扰串:¥entered— 

}else{ 

Password. 

¥sah=substr(¥enteredPassword,0,2); 

¥userPswd=crypt(¥enteredPassword,¥salt); 

crypt 0函数的缺省状态并不是最安全的,如果需要较高 

的安全性能,需要使用MD5散列算法。 

2.2基于文件的身份验证 

利用文本文件存储用户名和加密密码对,注意该文件应 

当储存在服务器文件栏根目录之外,避免强力猜测发现此文 

件,另外口令采用MD5加密,增大安全性。例如:authorpass. 

txt中内容: 

jack:39dksowweld030390924438783409234o 

mike:Osdklsd92300一wweoewlfdkdsfsdkkeiiwe 

andy kddi8023ks;929ssjsdkqjhdkds4I葛738w8 

代表3个用户名和密码。 

解析authorpass.txt文件的PHP验证代码如下: 

<?php 

¥authorized=false; 

if(isset(S_SERVER[‘PHP_AUTH_USER’】)&& 

isset(S_SERVER【‘PHP_AUTH_PW’])) 

f¥authfile=file(“/local/lib/php/authorpass.txt”); 

if(in_array(S_SERVER【‘PHP

_

AUTH

USER’】.”:” 

Md5(¥_SERVER【‘PHP_AUTHPW’】).”\n”,¥auth— 

File)) 

¥authorized=Ture; 

} 

if(!¥authorized) { 

header r‘WWW-authenticate:Basic Realm=”Secret 

Stash”’); 

header(‘HTTP,1.0 401 Unauthorized’); 

print(‘请输入正确的帐户密码’); 

exR; 

l 

2.3基于数据库的身份验证 

基于数据库的身份验证不仅改善了管理的方便性,提高 

了可扩展性,而且可以集成到更大的数据库基础设施中。实 

例步骤:在数据库表创建表login包含3个字段id、usemame、 

password,插入数据: 

1 zhangsan 09328sk183gdq3924hb7fdk33fghoki3 

2 lishi 8eisf02y8735i372d8ij4365jlg9wq824 

3 mike 3dr39v4hb7f8ij4365jlg92y8735i qu5 

数据库的身份验证的PHP代码: 

<?php 

function authenticate

_

user() { 

header r‘WWW—authenticate:Basic realm=”Secret 

Stash”’): 

mysql

_

pconnect(“localhost”,“authenticator”,“secret”) 

or die(“Can’t connect to database server!”); 

mysqlselect

_

db(“corporate”) 

or ted(“Can’t select database!”); 

¥query=”select usemame,password from userauth 

where usemame=’S

_

server[php—auth_user】'and 

password=MD5(S_server[php_auth_pw],)”; 

¥result=mysql

_

query(¥query); 

if(mysql_num_row(¥result):=0) { 

authenticate

user(); 

)else f echo“登录成功”; 

}} 

?> 

3 扩展库 

3.1安装 

标准的PHP安装过程中并没有把Mrcypt安装上,但PHP 

的主目录下包含了Mcrypt和Mhash的两个扩展库文件:libm— 

crypt.dll和libmhash.dll。将这两个文件复制到系统目录win— 

dows ̄system32下,然后在PHP.ini文件中将语句“;exten— 

sion=php-mcrypt.dll”和“;extension=php_mhash.dll”前面的 

;”去掉,保存并重启Apache服务器即可生效。 

3.2实例应用 

Mcrypt库支持20多种加密算法和8种加密模式,具体可 

以通过函数mcrypLlisLalgorithms()和mcryptjisLm0des() 

来显示。 

(1)实例3—2数据加密mcrypt_enerypt()与数据解密 

merypt_decrypt 0函数应用: 

<?php 

¥str=”我的名字是?一般人我不告诉他!.t;//力Ⅱ密内容 

¥key=”key:lll”;//密钥 

¥cipher=-MCRYPT

DES;//密码类型 

¥modes=MCRYPT

_

MODE

ECB;// ̄码模式 

¥iv=mcrypt_createiv(mcrypt_get_iv_size 

(¥cipher,¥modes),MCRYPT

RAND);//初始化向量 

echo”加密明文:”.¥str.”<p>”; 

¥s ̄_encrypt=mcrypt

encrypt(¥cipher, 

¥key,¥str,Smodes,¥iv);//)Jn密函数 

echo”加密密文:”.¥str_encrypt.”<p>”; 

¥str

decrypt=mcrypt

decrypt(¥cipher, 

¥key,¥str_encrypt,Smodes,¥iv);//解密函数 

echo”还原:”.¥str_decrypt; 

?> 

(2)实例3—3扩展库Mhash应用 

<?php 

¥hash

alg=MHASH

_

TIGER; 

Smessage=”These ale hte directions to the secret fort. 

篓 

电脑编程技巧与维护 

Two steps left,three steps right,and cha chacha.”; 

参考文献 

[1】杨波.现代密码学[M】.北京:清华大学出版社,2007. 

[2】W3sehoo1.PHPerypt().[DB/OL].http://www.w3sehoo1.COn1. 

cn/php/func

string crypt.asp. 

¥hashed

message=mhash(¥hash—alg,¥message); 

echo”hashed:”.bin2hex(¥hashed~message); 

?> 

(3)执行本程序输出结果 

Hashed:07a92a4db3a4177fl9ec9034ae5400eb60dla9fob4ade461 

【3]Douglas R.Stinson.密码学原理与实践【M】.冯登国,译. 

北京:电子工业出版社,2003. 

[4]W.Jason Gilmore.PHP与PHP程序设计[M].朱涛江,译. 

北京:人民邮电出版社,2009. 

【5]曹衍龙,赵斯思.PHP网络编程技术与实例[M】.北京: 

人民邮电出版社,2006. 

4 结语 

PHP内置的单向加密函数crypt 0和md5 0在功能上有 

定的限制,而PHP的加密扩展库Mcrypt和Mhash提供了更 

全而加密与解密方法。PHP是一种服务器端技术,因此要考 

虑到服务器和客户端之间数据传输安全问题l 5l。在实际的PHP 

网站加密应用中,需要配合Apache~SSL或其他的安全服务器 

的布置来实现一个更完整的安全应用。 

_I 、 ∞¥ e≈ 0、 ¨ ∞∞ ≈ ∞∞ ¥ t ∞ 、 、∞ 、∞∞ %、、 ∞H∞ e 、 ∽ e≈ ∞∞¥ t0、 、 

(上接第106页) 

图形,如图3所示。 

6 结语 

通过实例介绍了如何在Delphi程序中调用GForcal及几个 

Forcal扩展库,动态绘制函数图形,并着重讨论了加载GFo 

cal及扩展库的基础技术问题。本程序对数据的动态采集及显 

示有重要的参考意义。 

参考文献 

【1]王禄.在程序中加入Forcal脚本支持[J】.电脑编程技巧与 

维护,2011,(7):82—86. 

图3 Foreal动态绘制的二曲线图形 

(上接第111页) 

IF非自有资金占年末货币资金的比重:2 AND 

自有资金动用程度=2 

THEN财务状况=2 

为了得到更有价值的数据,对决策树进行了分析和评估, 

结果如表3所示。 

表3决策树正确识别率统计表(40条) 

样本类别 

财务失败 

及早做好预防工作,避免财务危机。采用此算法分析的这也 

是数据挖掘技术在财务领域的一个新型发展。 

参考文献 

【I]MARGARET H.DUNHAM.数据挖掘教程[M].郭崇慧, 

田风占,靳晓明,等,译.北京:清华大学出版社,2005. 

[2]杨周复,施建军.大学综合评价研究【M】.北京:中国人 

民大学出版社,2002. 

【3】JIAWEI HAN,MICHELINE KAMBER.Data Mining and 

Techniques[M].Morgan Kaufmann publishers,2000. 

样本数 错误识别数 

8 1 

正确率 

87.5% 

平均识别率 

80% 财务危险 

财务良好 

9 

23 

3 

4 

66.7% 

82.6% 

从表3中可以看出,决策树的整体识别率较高,但是财 

务危险的正确率较低,主要是因为财务危险的临界点比较难 

判断,区间划分存在一定的偏差。 

[4]Richard J Roiger,Michael W Geatz.数据挖掘教程【M】. 

翁敬农,译.北京:清华大学出版社,2003. 

[6]周根贵.数据仓库与数据挖掘【M】.浙江:浙江大学出版 

社,2004. 

3 结语 

综上所述,在此研究了将数据挖掘技术应用于高校财务 

预警分析中,运用决策树c4.5算法对高校财务状况的数据进 

行分析,经过决策判断出财务失败和财务危险的高校,使其 

、 

[7]李文峰,黄席椒.c4.5算法在国防生素质分析中的应用 

fJ],自动化技术与应用,2007,26(7):37—40. 

电赢20i1i隧1.躺16

124

与 

ii; 


本文标签: 加密 函数 数据 技术 身份验证