1.凯撒密码(Caesar)
凯撒密码简单理解就是将字符进行平移。
例如:将字母右移10位,那么 Password
将加密成Zkccgybn
凯撒加密的密钥就是右移的位数,由于只有26个英文字母,所以总共有26个密钥,暴力破解,穷举搜索,就可以破解密文。
python实现如下:
#! /usr/bin/env python3
#Caesar Encrypt
def CaeserEncrypt(text,n=10):#默认右移10位
if not text.isalpha():
raise Exception('Input must be a text of letters\n')
else:
res = ''
for char in text:
num = ord(char)
if char.isupper():
if num+n >90:
res += chr(num+n-26)
else:
res += chr(num+n)
else:
if num+n > 122:
res += chr(num+n-26)
else:
res += chr(num+n)
return res
if __name__ == '__main__':
//Caeser Encrypt
text = 'Password'
print(CaeserEncrypt(text))
//穷举破解
text = 'Zkccgybn'
for i in range(1,27):
print(CaeserEncrypt(text,i),' ',end='')
结果如下:
Zkccgybn
Alddhzco Bmeeiadp Cnffjbeq Doggkcfr Ephhldgs
Fqiimeht Grjjnfiu Hskkogjv Itllphkw Jummqilx
Kvnnrjmy Lwoosknz Mxpptloa Nyqqumpb Ozrrvnqc
Password Qbttxpse Rcuuyqtf Sdvvzrug Tewwasvh
Ufxxbtwi Vgyycuxj Whzzdvyk Xiaaewzl Yjbbfxam
Zkccgybn
2.简单替换密码
凯撒密码将字母平移,本质是建立了一个字母之间的一一映射,它也是一种特殊的替换密码。
如果我们打乱这种替换顺序,新建一个字母之间的一一映射,就可以得到一种新的加密方式,这就是简单替换密码。
python实现如下:
#! /usr/bin/env python3
#替换加密
import random
def generate_key():#随机生成一个密钥
key = {}
list = []
for i in range(26):
while True:
char = chr(round(random.uniform(65,90)))
if char not in list:
break
key[chr(65+i)] = char
list.append(char)
for k,v in key.copy().items():
key[k.lower()] = v.lower()
return key
def replaceEncrypt(text,key):#给定 明文和替换密钥 进行加密
res = ''
for char in text:
if char.isalpha():
res += key[char]
else:
res += char
return res
if __name__ == '__main__':
key = generate_key()
print(key)
text = 'Password'
print(replaceE