凯撒密码是单表替换密码,明文的一个字符用相应的一个密文字符替代。加密过程是从明文字母表到密文字母表的一一映射,凯撒密码又叫循环移位密码。
0x01加密解密方法
把明文中所有字母都用它右边的第k个字母替代,并认为z后边是A,这种映射关系表达式为:
c =(p+k)mod26
p是明文字母,k是明文秘钥
解密:
p=(c-k)mod26
c是密文
当k等于3时
如明文为:please confirm receipt
则密文为:SOHDVH FRQILUP UHFHLSW
0x02安全性分析
移位密码是极其不安全的,因为它可被穷举秘钥搜索所分析:仅有26个可能的秘钥,尝试每一个可能的加密规则,知道一个有意义的明文串被获得。平均来说,一个明文在尝试26/2=13解密规则后将显示出来
0x03 破解
1、穷举破译法
实现程序:
message="SOHDVH FRQILUP UHFHLSW" #以空格分隔
all_char="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for key in range(len(all_char)):
s=""
for encode_char in message:
if encode_char in all_char:
num = all_char.find(encode_char) #找到字符位置
num = (num - key+len(all_char))%len(all_char)
s=s+all_char[num]
else: #不在就是空格
s=s+encode_char
print("key %s:%s"%(key,s))
CAP4实现:找到Simple Analysis中的shfit,然后点击run
2、统计分析,这里我们用软件CAP4
首先将密文复制到Ciphertext里,然后再Basic Tools找到Freq,点击
点击run,sort是排序,Graph是以图标显示统计特性
利用明文统计规律与密文统计规律进行对应,明文统计规律表
i对应的可能是e,k=i-e=4
点击Ciphers中的Simple shift,输入K=4就可以了,凯撒密码属于简单移位密码