Есть шифровка, получена простым XOR'ом:
Примерный код на JAVA, шифруя которым получаем полное совпадениеpublic class HelloWorld {
public static void main(String[] args)
{
String tmp=xorxor("Проверка","keyyek");
System.out.println(tmp);
System.out.println(xorxor(tmp,"keyyek"));
}
public static String xorxor(String str, String key) {
StringBuilder crypt = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
int xor=str.charAt(i) ^ key.charAt(i % key.length());
crypt.append((char) xor);
}
String result = crypt.toString();
return result;
}
}
Расшифровывать надо на PHP, алгоритм повторен, но результат околонулевой:
Дешифратор на PHP$string="Проверка";
echo xorxor($string,'keyyek');
function xorxor($string,$key){
$res='';
for($i=0;$i<mb_strlen($string);$i++){
$part1=mb_substr($string,$i,1);
$part2=mb_substr($key, $i % mb_strlen($key),1);
$res.= $part1 ^ $part2;
}
return $res;
}
Понимаю, что дело в char и его utf-16, но на php получить положительный результат не смог.
P.S. На java – пример в обнимку с гуглом, для подтверждения предположения и поиска ошибки.
P.P.S. Не уверен, что правильно сформулировал вопрос.