欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

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

程序员文章站 2022-06-02 18:29:37
...
求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 Q





UgoCUQIE
加密后:UgoCUQIE



[/code]

现在的问题是:第0次循环$str[0]值是1,$key[0]值是c
我直接按照上面的 $str[0]^$key[0],(即1^0)却报错,怎么回事,另外 $str[0]^$key[0]不懂
------解决方案--------------------
手册,运算符
求php好手,看下这一段加密算法的原理

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

相关文章

相关视频