<?php
/*
$string = 'This is my encrypted string!';
$key = 'KEY';
$split = str_split($string, 3);
foreach($split as $chars)
echo bin2hex($chars ^ $key);
*/
function hamdist($a, $b)
{
$a = str_split($a);
$b = str_split($b);
$len = count($a);
$dist = 0;
for($i = 0; $i < $len; $i++)
{
$bits['a'] = str_split(sprintf('%08d', decbin(ord($a[$i]))));
$bits['b'] = str_split(sprintf('%08d', decbin(ord($b[$i]))));
for($x = 0, $len2 = count($bits['a']); $x < $len2; $x++)
if($bits['a'][$x] != $bits['b'][$x]) $dist++;
}
return $dist;
}
$enc = hex2bin('1f2d3038653038653432653c25262b32352d2e217938312b222b3e6a');
for($keysize = 2; $keysize <= 15; $keysize++)
{
$blockA = substr($enc, 0, $keysize);
$blockB = substr($enc, $keysize, $keysize);
printf("(Keysize = %d)\t%.2f\n", $keysize, (hamdist($blockA, $blockB) / $keysize));
}
preferences:
40.74 ms | 402 KiB | 5 Q