对称加密
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; //返回
}
发表评论: