基于Python解密仿射密码

这篇文章主要介绍了基于Python解密仿射密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

新学期有一门密码学课,课上老师布置了一道密码学题,题目如下:

解密由仿射密码加密的密文“DBUHU SPANO SMPUS STMIU SBAKN OSMPU SS”

想解密这个密文,首先必须要知道仿射密码是什么:

仿射密码是一种代换密码,加解密公式如下

加密:C=E([a,b],p)=(ap+b) mod 26C=E([a,b],p)=(ap+b) mod 26

解密:p=D([a,b],C)=((C−b)/a) mod 26p=D([a,b],C)=((C−b)/a) mod 26

很显然不能靠人力来解密,只好求助于计算机程序,下面是我写的用Python解密的代码,输出结果后要用语言学的知识(肉眼观察)来辨别哪一个是我们所需要的明文。此外,解密过程涉及到求逆元的过程,需要定义一个函数NI。

#encoding:utf-8

def NI(x,b): #定义求x关于b的逆元的函数NI,其中(NI(x,b)*x) mod b = 1 当x和b互质时求出的逆元唯一
  i = 1
  while (x*i)%b != 1:
    i = i + 1
  return i

c = "DBUHU SPANO SMPUS STMIU SBAKN OSMPU SS"
C = []

#对密文进行预处理并储存在列表中,储存形式是对应字母在26个英文字母中的位序
for i in c:
  if i == ' ':
    C.append(i)
  else:
    C.append(ord(i)-65)

#将加密算法中a可能的取值储存在列表中
a = [3,5,7,9,11,15,17,19,21,23,25]
P = []

for keyb in range(0,26):
  for keya in a:
    ni_a = NI(keya,26)
    for s in C:
      if s == ' ':
        P.append(' ')
      else:
        P.append(((s-keyb)*ni_a)%26) #将明文字母对应的位次码依次加入到明文列表中
    strP = ''
    for t in P:
      if t==' ':
        strP = strP + ' '
      else:
        strP = strP + chr(t+97) #将明文转化为字符串并输出
    print(strP)
    P = []

运行文件后依次打印出所有可能的明文。经过寻找,发现如下一行应当是所求的明文。

读出明文应当为theres no business like show business。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持昆居客【www.kunjuke.com】。

相关推荐:

三角洲行动二级密码怎么设置

《三角洲行动》是一款设定在2035年的第一人称特战干员战术射击游戏。就在最近三角洲行动终于更新了s10赛季,有许多新内容,那么有不少小伙伴好奇二级密码怎么设置,下面就来告诉大家。 三角洲行动二级密码怎么设置 1、第一步需要打开设置,点击隐私合规这个分类。 2、在这个分类里面的第一个就是二级密码的选项。 3、点击开启二级密码,然后就会出现二级密码的设置框。(密码6-20位) 4、设置以后会出现选择保...

三角洲行动二级密码上线时间介绍

《三角洲行动》是一款设定在2035年的第一人称特战干员战术射击游戏。就在最近s10赛季测试服已经上线了,官方也爆料了许多内容,那么有不少小伙伴好奇三角洲行动二级密码什么时候上线,下面就来告诉大家。  三角洲行动二级密码上线时间介绍 正式服上线时间:随 S10 裂变赛季6 月 26 日全服更新同步上线。 一、二级密码设置页面完整布局(S10 体验服实测) 入口路径 游戏主界面右上角设置齿轮 → 隐私...

悟空浏览器如何备份网页账号密码_悟空浏览器自动填充密码管理

悟空浏览器密码备份需云同步与本地CSV导出双轨并行:先登录账号开启密码同步确保实时加密上传,再通过密码管理器导出带日期后缀的CSV文件或提取SQLite数据库转换,同时关闭自动填充并清理缓存以保障完整性。 您需要将悟空浏览器中已保存的网站账号密码长期保留,防止因卸载、刷机或设备丢失导致登录信息全部清空,必须通过组合式备份手段实现——仅靠云同步不可靠,仅导出书签也不覆盖密码数据。 用悟空账号开启密码...

p7华为密码忘了怎么解锁?p7华为手机找回锁屏密码方法

p7华为忘记锁屏密码只能通过eRecovery模式恢复出厂设置解锁,因该机不支持云服务远程锁定、旧密码重置及隐私空间功能,且未启用FRP保护,重置后无需账号验证即可完成激活。 华为P7手机锁屏密码忘记后无法进入系统,但该机型不支持HarmonyOS 5及以上版本的“旧密码重置”或支付密码回退功能,也无法通过云服务远程锁定(因P7出厂搭载EMUI 3.0且未预装“查找我的手机”核心服务),必须依赖物...

Edge浏览器怎么配置密码生成器的复杂度要求与特殊字符_Edge浏览器强密码设定规则

Edge密码生成器长度滑块仅本次生效,范围12–24位,不保存默认;“排除易混淆字符”开关影响可读性与熵值;强度指示器只响应手动输入;右键“建议强密码”是兼容性兜底方案。 密码生成器长度滑块只在弹出面板里生效,不保存为全局默认 Edge 的密码长度设置没有“永久生效”的开关,每次点击密码框旁的钥匙图标后,必须手动点齿轮图标、拖动滑块重新设定。常见误区是以为调过一次 16 位就一劳永逸——实际它只影...

Safari浏览器如何导出密码文件_Safari导出浏览器密码方法【技巧】

需通过iOS设置导出加密CSV并人工解密、Mac终端security命令提取、Python脚本自动化生成、钥匙串访问手动复制、Applescript补全HTTPS前缀五种方式导出Safari登录凭证。 如果您需要将Safari浏览器中保存的网站登录凭证迁移至其他设备、进行异地备份或导入第三方密码管理器,但系统未提供直接明文导出入口,则需借助iOS设置导出加密CSV、Mac终端命令提取、自动化脚本生...

原神阿如棋盘解密攻略

就在最近原神进就要上线月之七版本了,在本次版本更新了许多新内容,有新剧情,新角色,新圣遗物,新的任务,还有新的任务,那么有不少小伙伴好奇阿如棋盘怎么解密,下面就来告诉大家。 原神阿如棋盘解密攻略 阿如棋盘解密第一关 卡维推开艾尔海森前面两石块后直接进入下方终点 艾尔海森阅读红色方块上方书解除后进入下方终点 阿如棋盘解密第二关 初始卡维将右侧石块推到墙边后移动到左侧红色方块下方 然后切换艾尔海森阅读...

企业微信app怎么设置会议密码_企业微信app会议密码设置【步骤】

企业微信会议入会密码仅能在预订时或未开始前设置,为4位纯数字,用于防止无关人员加入;会议开始后无法补设或修改,且进行中不支持动态启用。 在企业微信App中发起会议前设置入会密码,能防止无关人员随意加入,保障会议内容不被泄露。这个密码是参会者进入会议时必须输入的四位数字,不是会议链接本身的安全锁,也不是录制回放的访问密码。 预订新会议时设置入会密码 打开企业微信→点击底部【工作台】→找到并进入【会议...