对称加密

2017-02-10 11:13:59

/**
 * 对称加密
 */
/**
 * 播放随机种子
 */
function make_seed()
{
    list($usec, $sec) = explode(' ', microtime());
    return (float) $sec + ((float) $usec * 100000);
}

/**
 * 用密钥进行加密
 */
function enkey($txt,$key)
{
 $encrypt_key = md5($key); //将密钥进行MD5加密
 $ctrl = 0;     
 $tmp = '';
 
 //循环要加密的字符串
 for ($i=0 ; $i  {
  if($ctrl == strlen($encrypt_key)) $ctrl = 0 ;   //当$ctrl等于MD5加密字符串长度时,设置$ctrl为0
  $tmp .= substr($txt,$i,1)^substr($encrypt_key,$ctrl,1); //进行异或运算
  $ctrl++;            //自加1
 }
 return $tmp;            //返回
}
function encrypt($txt,$key)
{
 srand(make_seed());    //播放随机种子
 $encrypt_key = md5(rand());  //随机取随机数进行MD5加密
 $ctrl = 0;      //顺序读取随机数单个字符
 $tmp = '';      //加密字符
 
 //循环要加密的字符串
 for ($i=0 ; $i  {
  if($ctrl==strlen($encrypt_key)) $ctrl=0;            //当$ctrl等于加密随机数的长度,设置$ctrl=0;
  $tmp .= substr($encrypt_key,$ctrl,1).(substr($txt,$i,1)^substr($encrypt_key,$ctrl,1)); //对要加密的字符进行异或运算
  $ctrl++;                    //自加1
 }
 return enkey($tmp,$key);                 //调用enkey函数
}
function decrypt($txt,$key)
{
 $txt = enkey($txt,$key);    //调用enkey函数
 $ctrl = 0;
 $tmp ='';
 for ($i=0; $i  {
  $md5 = substr($txt,$i,1);   //获取随机加密的字符
  $i++;        //自增1,获取加密字符
  $tmp .= substr($txt,$i,1)^$md5;  //进行异或运算
 }
 return $tmp;       //返回
}

发表评论:

Powered by PHP 学习者(mail:517730729@qq.com)

原百度博客:http://hi.baidu.com/ssfnadn

备案号:闽ICP备17000564号-1

开源中国 PHPCHINA