首頁 > 後端開發 > php教程 > 求php好手,看下这一段加密算法的原理

求php好手,看下这一段加密算法的原理

WBOY
發布: 2016-06-13 11:08:27
原創
921 人瀏覽過

求php高手,看下这一段加密算法的原理

<br /><br />function sys_auth($str, $action = 'encode', $key = ''){<br />	$key = md5($key);<br />	$str = $action == 'encode' ? $str : base64_decode($str);<br />	<br />	<br />	$strlen = strlen($str);<br />	<br />	$keylen = strlen($key);<br />	<br />	$code = '';<br />	for($i = 0; $i < $strlen; $i++){<br />		$k = $i % $keylen;<br />		$code .= $str[$i] ^ $key[$k];<br />	}<br />	$code = $action == "decode" ? $code : base64_encode($code);<br />	return $code;<br />}<br /><br /><br />
登入後複製


我将每句都echo 下的代码:

<br /><br />function sys_auth($str, $action = 'encode', $key = ''){<br />	$key = md5($key);<br />	echo '<br>$key:'.$key;<br />	$str = $action == 'encode' ? $str : base64_decode($str);<br />	<br />	echo '<br>加密方式的$str:'.$str;<br />	<br />	$strlen = strlen($str);<br />	echo '<br>$str长度'.$strlen;<br />	<br />	$keylen = strlen($key);<br />	echo '<br>$keylen长度'.$keylen;<br />	<br />	$code = '';<br />	for($i = 0; $i < $strlen; $i++){<br />		$k = $i % $keylen;<br />		echo "<br>第".$i."次循环的\$k的值是".$k;<br />		$code .= $str[$i] ^ $key[$k];<br />		echo "<br>第".$i.'次循环$k值是'.$k;<br />		echo "<br>第".$i.'次循环$str[$i]值是'.$str[$i];<br />		echo "<br>第".$i.'次循环$key[$k]值是'.$key[$k];<br />		echo "<br>第".$i."次循环的\$code的值是".$code."<br><br><br><br><br>";<br />	}<br />	$code = $action == "decode" ? $code : base64_encode($code);<br />	echo "<br>".$code;<br />	return $code;<br />}<br /><br /><br />得到的结果是:<br />[code=PHP]<br />$key:c81e728d9d4c2f636f067f89cc14862c<br />加密方式的$str:123456<br />$str长度6<br />$keylen长度32<br />第0次循环的$k的值是0<br />第0次循环$k值是0<br />第0次循环$str[$i]值是1<br />第0次循环$key[$k]值是c<br />第0次循环的$code的值是R<br /><br /><br /><br /><br /><br />第1次循环的$k的值是1<br />第1次循环$k值是1<br />第1次循环$str[$i]值是2<br />第1次循环$key[$k]值是8<br />第1次循环的$code的值是R <br /><br /><br /><br /><br /><br />第2次循环的$k的值是2<br />第2次循环$k值是2<br />第2次循环$str[$i]值是3<br />第2次循环$key[$k]值是1<br />第2次循环的$code的值是R <br /><br /><br /><br /><br /><br />第3次循环的$k的值是3<br />第3次循环$k值是3<br />第3次循环$str[$i]值是4<br />第3次循环$key[$k]值是e<br />第3次循环的$code的值是R Q<br /><br /><br /><br /><br /><br />第4次循环的$k的值是4<br />第4次循环$k值是4<br />第4次循环$str[$i]值是5<br />第4次循环$key[$k]值是7<br />第4次循环的$code的值是R Q<br /><br /><br /><br /><br /><br />第5次循环的$k的值是5<br />第5次循环$k值是5<br />第5次循环$str[$i]值是6<br />第5次循环$key[$k]值是2<br />第5次循环的$code的值是R Q<br /><br /><br /><br /><br /><br />UgoCUQIE<br />加密后:UgoCUQIE<br /><br /><br />
登入後複製

[/code]
 
现在的问题是:第0次循环$str[0]值是1,$key[0]值是c
我直接按照上面的 $str[0]^$key[0],(即1^0)却报错,怎么回事,另外 $str[0]^$key[0]不懂
------解决方案--------------------
手册,运算符

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板