求php高手,看下这一段加密算法的原理function sys_auth($str, $action = 'encode', $key = ''){$key = md5($key);$str = $action == 'encode' ? $str : base64_decode($str);$strlen = strlen($str);$keylen = strlen($key);$code = '';for($i = 0; $i $k = $i % $keylen;$code .= $str[$i] ^ $key[$k];}$code = $action == "decode" ? $code : base64_encode($code);return $code;}登录后复制我将每句都echo 下的代码:function sys_auth($str, $action = 'encode', $key = ''){$key = md5($key);echo '$key:'.$key;$str = $action == 'encode' ? $str : base64_decode($str);echo '加密方式的$str:'.$str;$strlen = strlen($str);echo '$str长度'.$strlen;$keylen = strlen($key);echo '$keylen长度'.$keylen;$code = '';for($i = 0; $i $k = $i % $keylen;echo "第".$i."次循环的\$k的值是".$k;$code .= $str[$i] ^ $key[$k];echo "第".$i.'次循环$k值是'.$k;echo "第".$i.'次循环$str[$i]值是'.$str[$i];echo "第".$i.'次循环$key[$k]值是'.$key[$k];echo "第".$i."次循环的\$code的值是".$code."";}$code = $action == "decode" ? $code : base64_encode($code);echo "".$code;return $code;}得到的结果是:[code=PHP]$key:c81e728d9d4c2f636f067f89cc14862c加密方式的$str:123456$str长度6$keylen长度32第0次循环的$k的值是0第0次循环$k值是0第0次循环$str[$i]值是1第0次循环$key[$k]值是c第0次循环的$code的值是R第1次循环的$k的值是1第1次循环$k值是1第1次循环$str[$i]值是2第1次循环$key[$k]值是8第1次循环的$code的值是R 第2次循环的$k的值是2第2次循环$k值是2第2次循环$str[$i]值是3第2次循环$key[$k]值是1第2次循环的$code的值是R 第3次循环的$k的值是3第3次循环$k值是3第3次循环$str[$i]值是4第3次循环$key[$k]值是e第3次循环的$code的值是R Q第4次循环的$k的值是4第4次循环$k值是4第4次循环$str[$i]值是5第4次循环$key[$k]值是7第4次循环的$code的值是R Q第5次循环的$k的值是5第5次循环$k值是5第5次循环$str[$i]值是6第5次循环$key[$k]值是2第5次循环的$code的值是R QUgoCUQIE加密后:UgoCUQIE登录后复制[/code] 现在的问题是:第0次循环$str[0]值是1,$key[0]值是c我直接按照上面的 $str[0]^$key[0],(即1^0)却报错,怎么回事,另外 $str[0]^$key[0]不懂------解决方案--------------------手册,运算符
09-19 07:14