PHP语言广泛应用于WEB互联网的开发,其丰富的内置函数库和良好的移植性在网络开发中发挥了极其重要的作用,加密函数成功的应用于各种PHP程序之中,使相关数据在不安全的信息渠道中得以安全的传输,为保证前台
的网页浏览与后台的用户管理安全奠定了基础。
一、PHP中常见的加密函数
1、应用MD5()函数加密
该加密算法是一种常用的加密方法。MD5的全称是Message-Digest Algorithm5,Message-Digest通常指的是字节串的Hash变换,即为把一个任意长度的字节串转换为一定长度的整数。
MD5将任意长度的字节串变换成一个128位的大整数,并且是一种不可逆的转换算法,即使我们看到了源程序和算法描述,也无法将一个MD5的值变回原来的字符串,从而保证了原始数据的安全。MD50函数用来计算字符串的MD5混合值。其语法为:
String md5(sting str);用md50函数获取字符串加密后的值,如:
< ?php $str=”abc”; $mstr=md5($str); echo $mstr;//返回字符串加密后的值为“900150983cd24fbOd6963f7d28e17f72" ?>
2、应用CRYPTO函数加密
该函数将字符串用UNIX的标准加密模块DES进行加密,是单向的加密函数,每次页面刷新后产生的密码值是不同的,无法解密。
即可以实现加密一些明码,但不能将密文重新转换为明码。其语法为:
String crypt(string str,string [salt]);如果要比对字符串,将已加密的字符串的头两个字符放在salt的参数中,再比对加密后的字符串。其中,参数str是要被加密的明码,参数salt是可选的一个位字串,能够影响到加密的暗码,进一步保证了密码的安全。通常情况下,PHP使用一个2个字符的DES干扰串。如果不使用salt参数,则程序会自动产生干扰串,如:
< ?php $str=”abc"; $mstr=crypt($str); echo$mstr;//返回字符串加密后的值为 "$I$L60.2MI.$WWfXPw/SnRFGtTdnMVVdc.” ?>
二、加密技术在程序中的应用
在常见的WEB网站中,登录页面是必不可少的,用户登录的密码安全性要求自然不低。在以下常见的登录页面设计中,通过MD50,CRYPTO和BASE64编码的方式对用户的密码进行加密处理,着重体现PHP中加密技术在常见的网络程序的具体应用。以登录用户密码的加密为例来分析加密函数在获取用户信息中的加密处理应用。
1、通过crypt0函数加密
建立displaycrypt.php,其代码的前半部分通过post方法获取用户的用户名和密码信息同displaymd5 .php中的一样,其后半部分的核心代码为:
< ?php echo”用户名:$username”;//输出用户名 echo'kbr>";//输出换行
echo"密码已经过crypt0函数加密结果是:”;
echo”";echo¨”
?>再将login.html中form标记的action属性取值为displaycrypt.php,运行login.html用户名输入为“张三”,密码输入为“123456”,运行结果则为下图所示。
2、通过base64编码加密
建立displaybase64.php,其后半部分的核心代码为:
< ?php echo”用户名:$username”;//输出用户名 echo'kbr>";//输出换行
echo'kscript>alert(’密码已经过base64加密结果是:
”.base64_encode($userpass).¨’);”;//输出密码
(base64加密处理后的结果)
?>再将login.html中form标记的action属性取值为displaybase64.php,运行login.html,用户名输入为“张三”,密码输入为“123456”,运行结果则为下图所示。
三、加密技术的应用比较
总体上来讲,MD5广泛用于数据加密技术上,在大多数企业商业网站中用户的密码的值都是经过MD5的方式加密以后而保存在数据库中的。而用户在登录的过程中,程序需要把用户的密码转换成MD5加密处理以后的值和存储在原始数据库的MD5的值进行比较,而程序的本身并不关注用户的密码的真实性,该项技术尤其是在在线投票系统及企业的商务网站中,对用户的真实性身份进行加密处理。
在实际WEB开发的过程中,通过CRYPTO函数对用户的密码等相关信息进行加密也被得以广泛的应用,作为单向加密方式,即使加密口令落入第三方,由于不能被还原成明码,也不会影响网站的安全性,该函数被广泛应用于各类网站的管理员和会员的登录模块中。
BASE64_ ENCODE()和BASE64_- DECODE()函数用于为相关数据进行加密和解密,对密码的处理是双向的,广泛的应用于各种论坛中对用户的密码进行BASE64编码和大量的电子商务系统中对顾客的订单号进行BASE64编码。
小知识之Base64
Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的详细规范。