美文网首页密码学笔记
(二)传统密码——Caesar密码

(二)传统密码——Caesar密码

作者: 渔父歌 | 来源:发表于2019-03-13 20:32 被阅读0次

Caesar密码是已知最早的代换密码,又Julius Caesar发明。

Caesar密码非常简单,就是对字母表中的每个字母,用它之后的第三个字母来代换。例如:

明文:meet me after the toga party
密文:PHHW PH DIWHU WKH WRJD SDUWB
(在密码学中一般使用小写字母表示明文,大写字母表示密文)

如果我们让每个字母对应一个数字,比如字母 a-z分别与数字 0-25对应。那么加密算法可以用如下表达式表达。对每个明文字母p,代换成秘文字母C:
C = E(p) = (p+3) mod(26)
还可以更改移位的数量k,这样就得到了一般的Caesar算法, k的取值从1到25:
C = E(p) = (p+k) mod(26)
解密算法为:
p = D(C) = (C-k)mod (26)

用python实现的Caesar算法如下:

def Caeser_encode(text, offset=3):
    result = []
    for t in text.lower().encode():
        result.append((t + offset - 97) % 26 + 97)
    return bytes(result).decode()

def Caeser_decode(text, offset=3):
    result = []
    for t in text.lower().encode():
        result.append((t - offset - 97) % 26 + 97)
    return bytes(result).decode()

代码里的97对应字母a的ascii码值。

Caesar算法有三个特征:

  1. 已知加密和解密算法
  2. 密钥空间只有25
  3. 明文所用的语言是已知的,且其意义易于识别

根据Caeser算法的这三个特征攻击者可以使用穷举攻击来获取密钥和明文。用python实现的一种破解方式如下:

def Caeser_attack(text):
    for i in range(26):
        print(Caeser_decode(text, i), i)

对于密文:PHHW
使用破解算法的输出如下:
phhw 0
oggv 1
nffu 2
meet 3
ldds 4
kccr 5
jbbq 6
iaap 7
hzzo 8
gyyn 9
fxxm 10
ewwl 11
dvvk 12
cuuj 13
btti 14
assh 15
zrrg 16
yqqf 17
xppe 18
wood 19
vnnc 20
ummb 21
tlla 22
skkz 23
rjjy 24
qiix 25

可以很容易看出,只有当i=3时,解密出的明文才是有意义的,所以可以确定密钥k=3。

这里需要特别注意的是,攻击者能够破解密文并不意味着可以获取信息,如果用来加密的明文本身是不可识别的(比如明文是用其他加密算法加密过的),攻击者就无法通过穷举的方式来获取密钥,因为攻击者无法知道哪一个输出才是对应的明文。

相关文章

  • (二)传统密码——Caesar密码

    Caesar密码是已知最早的代换密码,又Julius Caesar发明。 Caesar密码非常简单,就是对字母表中...

  • 位移密码算法挑战

    著名的凯撒密码Caesar cipher,又叫移位密码。 移位密码也就是密码中的字母会按照指定的数量来做移位。 一...

  • Caesars Cipher(凯撒密码)

    Caesar cipher,又叫移位密码。 移位密码也就是密码中的字母会按照指定的数量来做移位。 一个常见的案例就...

  • 基于Python实现凯撒密码的加解密

    一、凯撒密码原理   在密码学中,恺撒密码(英语:Caesar cipher),是一种最简单且最广为人知的加密技术...

  • 一个简单的凯撒加密技术

    什么是凯撒加密? 在密码学中,恺撒密码(英语:Caesar cipher),或称恺撒加密、恺撒变换、变换加密,是一...

  • FCC 题目 Caesars Cipher

    要求 让上帝的归上帝,凯撒的归凯撒。 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码。 ...

  • Caesars Cipher(凯撒密码)

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • 凯撒密码

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • FCC-JS-BAS-Caesars Cipher-凯撒密码

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

  • free code camp,凯撒密码,运用String.cha

    凯撒密码 (让上帝的归上帝,凯撒的归凯撒) 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密...

网友评论

    本文标题:(二)传统密码——Caesar密码

    本文链接:https://www.haomeiwen.com/subject/bvxxmqtx.html