Я пытаюсь зашифровать сообщение, используя 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;
?>
Как это
<?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);
Конечно, вы никогда не помещаете дубликат в массив, но это может быть излишним.
Других решений пока нет …