单表代换密码之Caesar密码的代码实现

单表代换密码之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的方法以及字符串与数组之间的互换方法等。

##浏览器兼容

  1. 目前,本编辑器对Chrome浏览器支持最为完整。建议大家使用较新版本的Chrome。
  2. IE9以下不支持
  3. IE9,10,11存在以下问题
    1. 不支持离线功能
    2. IE9不支持文件导入导出
    3. IE10不支持拖拽文件导入

猜你喜欢

转载自blog.csdn.net/wzl_fd/article/details/82492599