恺撒密码的加密与解密

 2018-12-23 02:34:37   {{zan}}   0   258 

恺撒密码的加密与解密

算法描述:

        “恺撒密码”据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替代密码,通过将字母按顺序推后起3位起到加密作用,如将字母A换作字母D,将字母B换作字母E。据说恺撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码。

代码实现:

/**
 * @param $str -要加密的字符串
 * @param $code -偏移位数
 * @param int $type -0(默认)加密,1解密
 * @return string
 */
function caesar($str, $code, $type = 0)
{
    if ($type == 1) {
        $code = -$code;
    }
    $arr = str_split($str);
    $str_caesar = '';
    foreach ($arr as $k => $v) {
        if (preg_match("/^[a-z]/i", $v)) {
            $str_code = ord($v) + $code;
            if (strtoupper($v) === $v) {
                if ($str_code > ord('Z')) {
                    $str_code -= 26;
                }
                if ($str_code < ord('A')) {
                    $str_code += 26;
                }
            }
            if (strtolower($v) === $v) {
                if ($str_code > ord('z')) {
                    $str_code -= 26;
                }
                if ($str_code < ord('a')) {
                    $str_code += 26;
                }
            }
            $str_caesar .= chr($str_code);
        } else {
            $str_caesar .= $v;
        }
    }
    return $str_caesar;
}

函数调用:

$str = 'Fly in the sky!';
$caesar_encrypt = caesar($str,4);
echo $caesar_encrypt;
echo '<br>';
$caesar_decrypt = caesar($caesar_encrypt,4,1);
echo $caesar_decrypt;

运行结果:

Jpc mr xli woc!
Fly in the sky!  

最后总结:

        凯撒加密法,是一种最简单且最广为人知的加密技术。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。代码中我设置的偏移量是4,解密的时候也必须是4,不然解密会失败,4或许就是秘钥了。


        欢迎指导!

千而の大狮子!        

        

本文链接地址:https://caohongyuan.cn/p?id=72

(邮箱不会公开,只会做回复通知用) 提交 清空 {{comment.content}}
Re:{{response.content}}