1、浅析 PHP 加密技术在网站安全方面的应用摘 要:PHP 语言是当前网站开发最热门的语言之一,越来越多使用PHP 语言开发的网站涌现在了互联网上。但是由于安全意识的缺乏以及攻击手段的层出不穷,PHP 网站所暴漏出来的安全性问题也越来越多,本文主要就 PHP 中内置的加密函数在网络安全中的应用进行叙述。关键词:PHP;加密函数;身份认证;网站安全;引言自 20 世纪 90 年代国内互联网开始发展到现在,互联网信息几乎覆盖了我们日常活动所有知识范畴,并逐渐成为我们生活、学习、工作中必不可少的一部分。据统计,从 2003 年开始,我国的网页规模基本保持了翻番的增长速度,并且呈上升趋势。PHP 语言作
2、为当今最热门的网站程序开发语言,它具有成本低、速度快、可移植性好、内置丰富的函数库等优点,因此被越来越多的企业应用于网站开发中。出于对网络交易和数据传输安全方面的考虑,动态网站技术 PHP 语言脚本中内置了加密函数,它是一种保证网站信息安全的最有效的方法。1.PHP 的内置函数及应用PHP 中的内置函数包括单向函数 crypt() 、散列 MD5、数据编码与解码base64_enecode/base64_decode 等。1.1 函数 crypt()crypt()函数常用来对一些明文进行单向加密,例如,网站中需要验证用户的密码时,就需要对用户输入的密码进行单向加密,并将单向加密的密文与系统中保
3、存的密文进行比较,若相同,则允许用户登录。string crypt(string input_string , string salt)中的input_string 是想要加密的字符串,可选参数 salt 能够降低预计算攻击的威胁。由于采用的是单向加密,加密后的密文一旦落入到了第三方的手中,也无法从中获得明文,因此其意义不大。除单向加密外,crypt()函数还可以用来限制用户的访问权限,即对用户进行身份验证。首先创建一个有用户名和密码的表,然后将对应的数据存入表中。这里每个口令的前两个字母创建了干扰串。使用 Apche 的口令-应答认证配置提示用户输入用户名和口令,PHP 将其识别为$PHP_
4、AUTH_USER 和$PHP_AUTU_PW。1.2 散列 md5PHP 中内置的 md5()将一个可变长度的信息转化为 128 位消息摘要形式,检查文件的完整性,并进行数字签名验证和身份验证等。md5(string,raw)中的 string 为输入计算的字符串,可选参数 raw 规定了十六进制或二进制输出格式。使用该函数时,只有其中一个字符串中的一个字符发生了改变,则计算得到的结果也是截然不同的。1.3 base64_enecode 与 base64_decodeBase64_encode()返回使用 base64 对数据所做的编码,进而使二进制数据通过非纯 8-bit 传输层传输。ba
5、se64_decode 则对使用了 MIME base64 编码的数据进行解码,并返回原始数据,此时返回的数据可能是二进制的。2.PHP 加密扩展库及应用PHP 主目录下包含了两个扩展库:mcrypt 和 mhash。2.1mcryptmcrypt 提供了 35 种用于数据处理的函数,下面介绍数据加密函数和数据解密函数 mcrypt_encrypt()和 mcrypt_decrypt()的应用。?php$str=” PHP 加密技术”;/要加密的文字$key=”key:123”;/密钥$cipher=MCRYPT_ECB;/密码类型$modes=MCRYPT_MODE_ECB;/密码模式$iv
6、=mcrypt_create_iv(mcrypt_get_iv_size($cipher,$modes),MCRYPT_RAND);/初始化向量Echo”输入的明文” .$str.”p”;$str_encrypt=mcrypt_encrypt($cipher,$key,$str,$mode,$iv);/加密函数echo”加密后的密文” .$str_encrypt.”p”;$str_decrypt=mcrypt_decrypt($cupher,$key,$str_encrypt,modes,$iv);/解密函数Echo”还原”.$str_decrypt;?2.2 mhashMhash 支持的混编
7、算法有:CRC32 HAVAL160 MD6;CRC32B HAVAL192 RIPEMD160;GOST HAVAL224 SHA1;HAVAL128 HVAL256 TIGER。需要注意的是 mhash 支持的所有算法的名字都是以 MHASH_开头的。4.结束语在上述有关 PHP 内置函数及加密扩展库的论述中,crypt()和 md5()的功能方面存在一定的限制,Mcrypt 和 Mhash 扩展库则提供了更全面加密与解密方法。在应用 PHP 加密为实际网站加密的过程中,由于 PHP 是一种服务器端技术,不能阻止数据在传输过程中泄密,因此需要将服务器与客户端间数据传输的安全性作为一个重点的问题加以考虑,同时配合 Apache-SSL 等安全服务器,以此来实现一个更剧安全性能的网站系统。参考文献1W.Jason Gilmore,朱涛江译.PHP 与 PHP 程序设计.北京:人民邮电出版社,20092刘丽萍,张力宏,张兰兰.使用 PHP 对信息进行加密传输的研究.情报科学,2009,2(9):1383-13853吴晓刚.PHP 网站加密技术及其应用.电脑编程技巧与维护,2011