|
若a=b ^ c;則b=a ^ c (^是異或的意思),php在處理異或的字符時(shí)先把字符轉(zhuǎn)化為二進(jìn)制的ascii值,對(duì)這些值進(jìn)行異或,獲取結(jié)果后在將ascii值轉(zhuǎn)化為字符,原理說晚了直接貼實(shí)現(xiàn)的代碼:
復(fù)制代碼 代碼如下:
echo '<meta charset="utf-8">';
$str='世界,你好';
function jiami($str,$key){
$key=md5($key);
$k=md5(rand(0,100));//相當(dāng)于動(dòng)態(tài)密鑰
$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>';
有機(jī)會(huì)在完善下,本函數(shù)實(shí)現(xiàn)的是簡(jiǎn)單的加密解密
php技術(shù):php使用異或?qū)崿F(xiàn)的加密解密實(shí)例,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。