PHP 写的加密函数,支持私人密钥
时间:2009-04-29 来源:windlike
在开发PHP系统时,会员部分往往是一个必不可少的模块,而密码的处理又是不得不面对的问题,PHP 的 Mcrypt 加密库又需要额外设置,很多人都 是直接使用md5()函数加密,这个方法的确安全,但是因为md5是不可逆加密,无法还原密码,因此也有一些不便之处,本文介绍加密函数支持私钥,用起来 还是不错的.
代码如下:
PHP:
每一次加密后的结果是不一样的,大大加强了密码的安全性.
代码如下:
PHP:
- <?php
- // 说明:PHP 写的加密函数,支持私人密钥
- // 整理:http://www.CodeBit.cn
- function keyED($txt,$encrypt_key)
- {
- $encrypt_key = md5($encrypt_key);
- $ctr=0;
- $tmp = "";
- for ($i=0;$i<strlen($txt);$i++)
- {
- if ($ctr==strlen($encrypt_key)) $ctr=0;
- $tmp.= substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1);
- $ctr++;
- }
- return $tmp;
- }
- function encrypt($txt,$key)
- {
- srand((double)microtime()*1000000);
- $encrypt_key = md5(rand(0,32000));
- $ctr=0;
- $tmp = "";
- for ($i=0;$i<strlen($txt);$i++)
- {
- if ($ctr==strlen($encrypt_key)) $ctr=0;
- $tmp.= substr($encrypt_key,$ctr,1) . (substr($txt,$i,1) ^ substr($encrypt_key,$ctr,1));
- $ctr++;
- }
- return keyED($tmp,$key);
- }
- function decrypt($txt,$key)
- {
- $txt = keyED($txt,$key);
- $tmp = "";
- for ($i=0;$i<strlen($txt);$i++)
- {
- $md5 = substr($txt,$i,1);
- $i++;
- $tmp.= (substr($txt,$i,1) ^ $md5);
- }
- return $tmp;
- }
- $key = "www.yitu.org";
- $string = "我是加密字符";
- // encrypt $string, and store it in $enc_text
- $enc_text = encrypt($string,$key);
- // decrypt the encrypted text $enc_text, and store it in $dec_text
- $dec_text = decrypt($enc_text,$key);
- print "加密的 text : $enc_text <Br> ";
- print "解密的 text : $dec_text <Br> ";
- ?>
每一次加密后的结果是不一样的,大大加强了密码的安全性.
相关阅读 更多 +