单表代换密码之Caesar密码的代码实现
代码块
代码块语法遵循标准markdown代码,例如:
from operator import mod
#ceasar加密算法
def ceasarC(a):
L=['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']#把英文字母和十进制数字的对应关系存进一个数组中
s=list(a)#把字符串a变成字符数组
p=[]
for k in s:#逐个遍历s中的元素
m=L.index(k)#找到数组s中元素k对应数组L中的位置
#进行ceasar加密
if m>=0 and m<=23:
c=mod(m+3,26)
p.append(L[c])
elif m>23:
c=mod(25-m,26)
p.append(L[c])
str1=''.join(p)
print(str1)
print('Ceasar加密:')
ceasarC('iloveyou')
print('--------------------------------------------------')
print('--------------------------------------------------')
def ceasarM(b):
L=['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']#把英文字母和十进制数字的对应关系存进一个数组中
s=list(b)
p=[]
for k in s:
x=L.index(k)
if x<2:
m=mod(23+x,26)
p.append(L[m])
elif x>=2 and x<=25:
m=mod(x-3,26)
p.append(L[m])
str2=''.join(p)
print(str2)
print('Ceasar解密:')
ceasarM('loryhbrx')
实验结果
文章目录
数学公式
- Caesar密码的加密代换和解密代换分别为:
c=E(m)≡m+3(mod 26),0<=m<=25
m=D(c≡c-3(mod 26),0<=c<=25
总结
通过本次练习,让我对python中的列表有了更深的了解,同时还掌握了求mod的方法以及字符串与数组之间的互换方法等。
##浏览器兼容
- 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
- IE9以下不支持
- IE9,10,11存在以下问题
- 不支持离线功能
- IE9不支持文件导入导出
- IE10不支持拖拽文件导入