function createPolybiusSquare() {
$alphabet = 'ABCDEFGHIKLMNOPQRSTUVWXYZ';
$square = [];
$positionMap = [];
for ($i = 0; $i < 5; $i++) {
for ($j = 0; $j < 5; $j++) {
$char = $alphabet[$i * 5 + $j];
$square[$i][$j] = $char;
$positionMap[$char] = ($i + 1) . ($j + 1);
}
}
return [$square, $positionMap];
}
function encrypt($text, $positionMap) {
$text = strtoupper(str_replace('J', 'I', $text));
$encryptedText = '';
foreach (str_split($text) as $char) {
if (isset($positionMap[$char])) {
$encryptedText .= $positionMap[$char];
}
}
return $encryptedText;
}
list($square, $positionMap) = createPolybiusSquare();
$inputText = "HELLO WORLD";
$encryptedText = encrypt($inputText, $positionMap);
echo "Зашифрованный текст: " . $encryptedText;
?>
В древней Греции был известен шифр, называемый «квадрат Полибия». Шифровальная таблица представляла собой квадрат с пятью столбцами и пятью строками, которые нумеровались цифрами от 1 до 5. В каждую клетку такого квадрата записывалась одна буква. В результате каждой букве соответствовала пара чисел, и шифрование сводилось к замене буквы парой чисел. Для латинского алфавита квадрат Полибия имеет вид