如何计算凯撒密码中的空格和数字?

时间:2016-07-05 05:19:15

标签: php encryption caesar-cipher

我正在尝试使用CAESAR&C; 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;
?>

1 个答案:

答案 0 :(得分: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);

为了确保你永远不会在数组中放置副本,但这可能有点过分。