网站安全与PHP加密技术的应用研究

2016-05-14 20:32何志明
知音励志·社科版 2016年6期
关键词:数据加密

何志明

摘 要 随着互联网技术的发展,越来越多的PHP语言开发网站不断涌现,特别是网络上的大量交易和大量数据传输,PHP网站所暴漏出来的安全性问题也越来越突出,数据加密技术就显越来越重要了。

【关键词】网站安全;数据加密;PHP技术

1 PHP加密的基本原理

PHP是英文超文本处理语言Hypertext Preprocessor的缩写,是对文件或数据按某种加密算法进行计算处理,使其成为不可读的一段数字代码,通过这样的途径来达到保护数据不被非法窃取和阅读的目的。PHP 是一种 HTML 内嵌式的语言,是一种在服务器端执行的嵌入HTML文档的脚本语言,现已被广泛地运用。

2 PHP的常用函数及其应用

2.1 不可逆的加密函数为:md5()、crypt()

md5() 用来计算 MD5 哈稀。语法为:string md5(string str);

crypt() 将字符串用 UNIX 的标准加密 DES 模块加密。这是单向的加密函数,无法解密。欲比对字符串,将已加密的字符串的头二个字符放在 salt 的参数中,再比对加密后的字符串。语法为:string crypt(string str, string [salt])。

2.2 可逆转的加密为:base64_encode()、urlencode() 相对应的解密函数:base64_decode() 、urldecode()

base64_encode() 将字符串以 MIME BASE64 编码。此编码方式可以让中文字或者图片也能在网络上顺利传输。语法为string base64_encode(string data); 它的解密函数为:string base64_decode(string encoded_data); 将复回原样。

urlencode() 将字符串以 URL 编码。例如空格就会变成加号。语法为:string urlencode(string str);

它的解密函数为:string urldecode(string str); 将复回原样。

2.3 加密/解密字符串函数应用举例

/**

* 可逆的字符串加密函数

* @param int $txtStream 待加密的字符串内容

* @param int $password 加密密码

* @return string 加密后的字符串

*/

public static function enCrypt($txtStream,$password){

//密锁串,不能出现重复字符,内有A-Z,a-z,0-9,/,=,+,_,

$lockstream = 'st=lDEFABCNOPyzghi_jQRST-UwxkVWXYZabcdef+IJK6/7nopqr89LMmGH012345uv';

//随机找一个数字,并从密锁串中找到一个密锁值

$lockLen = strlen($lockstream);

$lockCount = rand(0,$lockLen-1);

$randomLock = $lockstream[$lockCount];

//结合随机密锁值生成MD5后的密码

$password = md5($password.$randomLock);

//开始对字符串加密

$txtStream = base64_encode($txtStream);

$tmpStream = '';

$i=0;$j=0;$k = 0;

for ($i=0; $i

$k = ($k == strlen($password)) ? 0 : $k;

$j = (strpos($lockstream,$txtStream[$i])+$lockCount+ord($password[$k]))%($lockLen);

$tmpStream .= $lockstream[$j];

$k++;

}

/**

3 PHP加密扩展库及应用

3.1 mhash扩展库

安装Mhash扩展库:首先把PHP目录下的libmhash.dll文件copy到系统目录下,然后在php.ini文件中找到”;extension=php_mhash.dll”将前面的分号去掉,最后重启服务器。

Mhash扩展库常量:Mhash扩展库支持MD5,SHA1,CRC32等多种散列算法,可以使用mhash_count()和mhash_get_hash_name()函数输出支持的算法名称。

Mhash扩展库应用:获取文件的全部内容:file_get_contents(文件名)。

3.2 Mcrypt()扩展库

安装Mcrypt()扩展库:首先把PHP目录下的libmcrypt.dll文件copy到系统目录下,然后在php.ini文件中找到”;extension=php_mcrypt.dll”将前面的分号去掉,最后重启服务器。

Mcrypt()扩展库常量:支持20多种加密算法和8种加密模式,可以通过函数mcrypt_list_algorithms()和mcrypt_list_modes()来查看。

Mcrypt应用:初始化向量:mcrypt_create_iv(该向量的大小,向量的源(MCRYPT_RAND:取系统的随机数))

获取到初始化向量的大小:mcrypt_create_iv_size(加密算法;加密模式);

加密:mcrypt_encrypt(加密算法,密钥,需要加密的数据,算法模式,向量);

解密:mcrypt_decrypt(加密算法,密钥,需要解密的数据,算法模式,向量)。

4 结语

PHP加密函数或加密库只是一种简单的阻止数据在传输过程中泄密方式, PHP不能阻止数据在传输过程中泄密,Mcrypt和Mhash扩展库则提供了更全面加密与解密方法。要想构建一个更加安全性的网站,需要将服务器与客户端间数据传输的安全性综合考虑,同时配合Apache-SSL等其它安全服务器使用,以便组建一个性能更加安全的网站系统。

作者单位

重庆三峡职业学院 重庆市 404155

猜你喜欢
数据加密
大数据时代个人隐私的保护
AES和RSA混合加密技术在网络数据传输中的应用
云数据存储安全关键技术研究
企业门户网站安全访问解决方案研究
一种基于虚拟专用网及数据加密技术的企业财务会计记录直报系统的实现方案
智能家居系统安全性方案的设计