PHP循环二进制xor

时间:2013-01-21 08:33:10

标签: php

如何循环键$ text这是我的代码:

function _xor($text,$key){
    for($i=0; $i<strlen($text); $i++){
        $text[$i] = intval($text[$i])^intval($key[$i]);
    }
    return $text;
}

上述代码的结果不会像$key长度$text那样重复。 我希望$key$text与{{1}}一样多,然后重新异化 怎么重复?

1 个答案:

答案 0 :(得分:1)

你必须使用modulo运算符才能使用$ key字符串的[0 .. strlen($ key)-1]索引。 如果您放置$i % strlen($key),您将获得从零到strlen($ key)的值 - 循环中的1

function _xor($text,$key){
    for($i=0; $i<strlen($text); $i++){
        $text[$i] = intval($text[$i])^intval($key[$i % strlen($key)]);
    }
    return $text;
}

PS:关于模运算符的信息:http://en.wikipedia.org/wiki/Modulo_operation