3v4l.org

run code in 300+ PHP versions simultaneously
<?php function score_xor($line) { $score_arr = array(); $char_scores_arr = array( "a" => 9, "b" => 1, "c" => 3, "d" => 4, "e" => 13, "f" => 2, "h" => 6, "i" => 7, "j" => 0, "k" => 1, "l" => 4, "m" => 2, "n" => 7, "o" => 8, "p" => 2, "q" => 0, "r" => 6, "s" => 6, "t" => 9, "u" => 3, "v" => 1, "w" => 2, "x" => 0, "y" => 2, "z" => 0 ); #$input = pack("H*", "1b37373331363f78151b7f2b783431333d78397828372d363c78373e783a393b3736"); $input = pack("H*", $line); for ($i = 0; $i < 128; $i++) { $ciphertext = array(); $score = 0; for ($j = 0; $j < strlen($input); $j++) { $to_add = chr(ord($input[$j]) ^ $i); array_push($ciphertext, $to_add); if (array_key_exists(strtolower($to_add), $char_scores_arr)) $score += $char_scores_arr[strtolower($to_add)] + ord($to_add); } $ciphertext = implode("", $ciphertext); $score_arr[$ciphertext] = $score; } arsort($score_arr); $count = 5; $ret = array(); foreach ($score_arr as $ciphertext => $score) { if ($count--) array_push($ret, "Text: $ciphertext\n\tScore: $score\n"); else break; } return $ret; } $txt = file_get_contents("http://cryptopals.com/static/challenge-data/4.txt"); $lines = explode("\n", $txt); $results = array(); foreach ($lines as $line) { array_push($results, score_xor($line)); } var_dump($results); ?>

preferences:
39.27 ms | 402 KiB | 5 Q