<?php

require_once '../../functions/singleByteXOR.php';
if ($argc > 1) {
    $input = hex2bin($argv[1]);
} else {
    $input = hex2bin("1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736");
}
$scores = findSingleByteXOR($input);
arsort($scores);
$keyCount = 0;
foreach ($scores as $key => $value) {
    if ($keyCount < 5) {
        $decrypt = singleByteXOR($input, chr($key));
        printf("'%1\$1c' (%1\$'03u) %2\$+09.3f : %3\$1s\n", $key, $value, $decrypt);
    } else {
        break;
    }
    $keyCount++;
}
}
$lines = array();
$file = fopen($filename, "r");
while (!feof($file)) {
    //read file line by line into a new array element
    $lines[] = trim(fgets($file, 4096));
    //remove blank lines, suppress empty element left by editors
    $lines = array_filter($lines);
}
fclose($file);
$linesKey = [];
//store best scoring key for each line
$linesScore = [];
//store best score for each line
foreach ($lines as $lineNumber => $line) {
    $scores = findSingleByteXOR(hex2bin($line));
    arsort($scores);
    $keyCount = 0;
    foreach ($scores as $key => $value) {
        if ($keyCount < 1) {
            $linesKey[$lineNumber] = $key;
            $linesScore[$lineNumber] = $value;
        } else {
            break;
        }
        $keyCount++;
    }
}
arsort($linesScore);
$lineCount = 0;
printf("LINE KEY KEY#  SCORE       OUTPUT\n");