求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 />
<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 />
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号