若a=b ^ c;则b=a ^ c (^是异或的意思),php在处理异或的字符时先把字符转化为二进制的ascii值,对这些值进行异或,获取结果后在将ascii值转化为字符,原理说晚了直接贴实现的代码:
echo \'<meta charset=\"utf-8\">\';
$str=\'世界,你好\';
function jiami($str,$key){
$key=md5($key);
$k=md5(rand(0,100));//相当于动态密钥
$k=substr($k,0,3);
$tmp=\"\";
for($i=0;$i<strlen($str);$i++){
$tmp.=substr($str,$i,1) ^ substr($key,$i,1);
}
return base64_encode($k.$tmp);
}
function jiemi($str,$key){
$len=strlen($str);
$key=md5($key);
$str=base64_decode($str);
$str=substr($str,3,$len-3);
$tmp=\"\";
for($i=0;$i<strlen($str);$i++){
$tmp.=substr($str,$i,1) ^ substr($key,$i,1);
}
return $tmp;
}
$key=\'cc\';
$jh=jiami($str, $key);
echo \'加密前:\'.$str.\'<br>\';
echo \'加密后:\'.$jh.\'<br>\';
echo \'解密后:\'.jiemi($jh, $key).\'<br>\';
有机会在完善下,本函数实现的是简单的加密解密
本文地址:https://www.stayed.cn/item/10486
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我