• 技术文章 >后端开发 >php教程

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

    2016-06-13 12:50:52原创232
    求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 < $strlen; $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 < $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]不懂
    ------解决方案--------------------
    手册,运算符
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:nbsp code str key strlen
    上一篇: Mediawiki怎么删除页面上方的标题 下一篇: linux下设置新建mysql帐号并赋予权限有关问题

    相关文章推荐

    • Synfony开发第二篇解决方案 • 小弟我是刚转做PHP的 • 这个正则啥意思?该如何解决 • 晕了 ,求个正则表达式 php的, . • 【实时项目进度贴】原创PHP社区论坛项目正在进行中!关注。o(∩_∩)o.哈哈。该如何解决

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网