前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python创建培根密码表_实现培根密码解密

Python创建培根密码表_实现培根密码解密

作者头像
张旭博客
发布于 2022-12-27 06:52:49
发布于 2022-12-27 06:52:49
1.4K00
代码可运行
举报
文章被收录于专栏:zxbkzxbk
运行总次数:0
代码可运行

python实现解密培根脚本,解密程序好多都是在线的,今天想把解密程序用python写一个离线的,就当学习练习,以下文章供大家参考、学习,如有错误,多多指出,谢谢大家!

  • 常规培根密码表:明文 i和j、u和v 所对应的密文是一样的。
  • 扩展培根密码表:包括所有26个字符。
  • 培根密码解密:5个字符为一组为一个明文密码字符

培根密码表一

["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","babaa","babab","babba","babbb","bbaaa","bbaab"]

  • 26个密文,分别对应明文26个英文字母(不区分大小写)。
  • 要求编写一个解密脚本,并用这个脚本来解密下面的密文:

BAABAABBAAAAAAAABABBABABBBAABABAABBABBBAABBABAABAA

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
txt = input().lower()   #.lower()方法把输入数据转换为小写
#a定义为键
a = ["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","babaa","babab","babba","babbb","bbaaa","bbaab"]
#b定义为值,并利用列表推导式列出a~z
b = [chr(i) for i in range(ord('a'),ord('z')+1)]
['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']
key = dict(zip(a,b))   #key定义为字典,使用zip()函数将a,b组合为字典
for i in range(0,len(txt),5):   #0~50,共计50字符,步长为5
  print(key.get(txt[i:i+5]),end='')   #输出字典对应的值,不换行

培根密码表二

["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","babaa","babab","babba","babbb"]

24个密文,对应的明文: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '(ij)', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', '(uv)', 'w', 'x', 'y', 'z’]

要求编写一个解密脚本,并用这个脚本来解密下面的密文:

AAAABAAAAAAAABAABBABABBAAABAAABAAABABBAAABBABBAABAAABABABBABABBABAAABB

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/usr/bin/python3
 #用replace()方法和lower()方法处理输入数据,去除两侧空格并把字符转换成小写
txt = input().replace(' ','').lower()
a = ["aaaaa","aaaab","aaaba","aaabb","aabaa","aabab","aabba","aabbb","abaaa","abaab","ababa","ababb","abbaa","abbab","abbba","abbbb","baaaa","baaab","baaba","baabb","babaa","babab","babba","babbb"]
b = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', '(ij)', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', '(uv)', 'w', 'x', 'y', 'z']
#使用字典推导式将a与b组成对应的字典
key = {i:j for i,j in zip(a,b)}
#循环变量i步长为5进行取值
for i in range(0,len(txt),5):
  print(key.get(txt[i:i+5]),end='')

解密练习:

密文:hellOeveryone,AreYOU huNGrY?woUldyou li To eAtBAcon?

  • 正规的培根密文密码,一般大写字母对应a,小写字母对应b,否则反之。
  • 上边已经做好了两个解密脚本,只需将对应的字符进行转换成abab这样的字符串
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> a = 'hellOeveryone,AreYOU huNGrY?woUldyou li To eAtBAcon?'
>>> flag = ''
>>> for i in a:
...     if i.islower():   #如果i小写,则flag变量追加a
...             flag = flag + 'a'
...     elif i.isupper():   #如果i是小写,则flag变量追加b
...             flag = flag + 'b'
... 
>>> flag   #拿最后的值去进行解密
'aaaabaaaaaaaabaabbbaabbabaabaaaaaaabaababbaaa'

提示:

若两次解密都错误,或许是 a b 的值对应错了。 可以使用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
table = ' '.maketrans('ab','ba') 
flag.translate(table)

则可以进行a与b的互换

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 培根密码表一
  • 培根密码表二
  • 解密练习:
  • 提示:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档