0

長い $text としてキーをループする方法 これは私のコードです:

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

$key上記のコードの結果はlengthほど繰り返されません$text。やり直したいのですが、$keyどのように繰り返すのですか?$text

4

1 に答える 1

1

$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

于 2013-01-21T08:41:12.343 に答える