2016-07-05 7 views
0

Я пытаюсь зашифровать сообщение с помощью 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

$ n является символом строки справа ?, используйте in_array ($ n, array ('1', '2', '3', '4', '5', ...)); что я бы определил ваш массив плохих персонажей вне цикла, а затем просто посмотрим, является ли это одним из них, правильно? – ArtisticPhoenix

+0

Да $ n - строковый символ. Итак, где вы предлагаете мне использовать th in_array? – Ayan

+0

Ну, я не знаю, что вы хотите с ними делать, но вы можете найти их, проверив каждый символ против массива плохих символов, поэтому, если вы положите if внутри цикла и т. Д. И т. Д., Если вы хотите увеличить производительность вы можете использовать strpos ('123456', $ n), а также ... http://php.net/manual/en/function.strpos.php – ArtisticPhoenix

ответ

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; 
?> 

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

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

$alphabet = array_unique($alphabet); 

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

+0

Nopes, это не так, я тоже не компьютерный студент. Я изучаю скрипты самостоятельно, с помощью stackoverflow и google и, очевидно, от таких людей, как вы. – Ayan

+0

Получите хороший идеал, такой как NetBeans или Eclipse PDT, который поможет вам кучу. Я занимаюсь PHP в течение 7 лет и много криптографии. – ArtisticPhoenix

+0

Хорошо. Является ли Laravel и IDE? – Ayan