当前位置:Gxlcms > PHP教程 > 求php高手,看上这一段加密算法的原理

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

时间:2021-07-01 10:21:17 帮助过:15人阅读

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


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 < $strlen; $i++){
        $k = $i % $keylen;
        $code .= $str[$i] ^ $key[$k];
    }
    $code = $action == "decode" ? $code : base64_encode($code);
    return $code;
}





我将每句都echo 下的代码:

PHP code


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 < $strlen; $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]不懂

------解决方案--------------------
手册,运算符

人气教程排行