Как учесть пробелы и числа в шифре Цезаря?

Я пытаюсь зашифровать сообщение, используя CAESAR’S CIPHER, и шифрование также работает правильно. Но теперь я хотел бы знать, как учитывать пробелы и числа в строке для шифрования.

PHP

<?php
//the text to be encrypted
$plain_text='ABC';
echo $plain_text."<br>";
//letters of alphabet array
$alphabet=array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
//positions of the letters in alphabet
$flip=array_flip($alphabet);

//plaintext array
$plain_text=str_split($plain_text);
$n=count($plain_text);
$encrypted_text='';
for ($i=0; $i<$n; $i++){
//encryption
$encrypted_text.=$alphabet[($flip[$plain_text[$i]]+2)%26];
}

echo $encrypted_text;
?>

0

Решение

Как это

<?php
//the text to be encrypted
$plain_text='ABC';
echo $plain_text."<br>";
//letters of alphabet array
$alphabet=array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1','2','3','4','5','6','7','8','9','0',' ');
//positions of the letters in alphabet
$flip=array_flip($alphabet);
$mod = count( $alphabet );

//plaintext array
$plain_text=str_split($plain_text);
$n=count($plain_text);
$encrypted_text='';
for ($i=0; $i<$n; $i++){
$n = strtoupper( $n );
//encryption
$encrypted_text.=$alphabet[($flip[$plain_text[$i]]+2) % $mod];
}

echo $encrypted_text;
?>

Добавьте их в свой список и сделайте динамический $ mod на основе количества, я бы добавил strtoupper для учета строчных букв.

Тем не менее, это не твоя домашняя работа, не так ли? Вы можете поместить туда все, что вам нравится, если это не дубликат, если вы хотите проверить ошибки на наличие дубликатов, просто

   $alphabet = array_unique($alphabet);

Конечно, вы никогда не помещаете дубликат в массив, но это может быть излишним.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]