培根密码(Bacon)——python解密

article/2025/10/12 11:59:20

简介

培根密码,又名倍康尼密码(英语:Bacon’s cipher)是由法兰西斯·培根发明的一种隐写术。

特点
培根密码本质上是将二进制信息通过样式的区别,加在了正常书写之上。培根密码所包含的信息可以和用于承载其的文章完全无关。培根密码实际上就是一种替换密码,根据所给表一一对应转换即可加密解密 。它的特殊之处在于:可以通过不明显的特征来隐藏密码信息,比如大小写、正斜体等,只要两个不同的属性,密码即可隐藏。

实现

培根密码实际上就是一种替换密码,一般有两种加密方式,所以相互对应就可以了。
在这里插入图片描述

代码

函数

letters1 = ['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',
]
letters2 = ['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',
]
cipher1 = ["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",
]
cipher2 = ["AAAAA", "AAAAB", "AAABA", "AAABB", "AABAA", "AABAB", "AABBA","AABBB", "ABAAA", "ABAAA", "ABAAB", "ABABA", "ABABB", "ABBAA","ABBAB", "ABBBA", "ABBBB", "BAAAA", "BAAAB", "BAABA","BAABB", "BAABB", "BABAA", "BABAB", "BABBA", "BABBB",
]def bacon1(string):lists = []# 分割,五个一组for i in range(0, len(string), 5):lists.append(string[i:i+5])# print(lists)# 循环匹配,得到下标,对应下标即可for i in range(0, len(lists)):for j in range(0, 26):if lists[i] == cipher1[j]:# print(j)print(letters1[j], end="")print("")def bacon2(string):lists = []# 分割,五个一组for i in range(0, len(string), 5):lists.append(string[i:i+5])# print(lists)# 循环匹配,得到下标,对应下标即可for i in range(0, len(lists)):for j in range(0, 26):if lists[i] == cipher2[j]:# print(j)print(letters2[j], end="")print("")

主函数

import Baconif __name__ == "__main__":Bacon.bacon1("aababababbaaaaaaabba")Bacon.bacon2("AABABABABAAAAAAAABBA")

在这里插入图片描述

总结

这个我很少遇到,不太常见。


http://chatgpt.dhexx.cn/article/ZvKH1MBa.shtml

相关文章

CTF-bacon(培根密码)

一、题目 培根密码实际上就是一种替换密码,根据所给表一一对应转换即可加密解密 。它的特殊之处在于:可以通过不明显的特征来隐藏密码信息,比如大小写、正斜体等,只要两个不同的属性,密码即可隐藏。 二、解题思路 …

【密码学 | CTF】培根密码

原理简述 加密方式有两种,但说实话我没看懂第二种的;i-j和u-v是怎么加密的呢?一解密岂不是乱了? 但解密用第一种方式就行了,每五个切割,对照字典解密即可,难度很小 def 培根密码_解密():培根密…

XML文档操作

文章目录 [toc] XML概述代码示例 CSS格式化XML为什么要用CSS样式表: 代码示例:代码详解: XSLT转化XMLXSLT简介:代码示例代码详解:正确的样式表声明从XML里提取数据节点匹配 DOM解析XMLXML DOM简介节点 代码示例代码详解…

XML文件的DOCTYPE定义

2019独角兽企业重金招聘Python工程师标准>>> DOCTYPE的常用声明&#xff1a;按照 HTML 4.01 XHTML 1.0 XHTML 1.1 列表如下&#xff0c;错误的DOCTYPE HTML PUBLIC反而会导致页面解析错误。HTML 4.01规范分为&#xff1a;Strict, Transitional, Frameset <!DO…

XML的内容

XML简介&#xff1a; XML是跨平台的语言&#xff0c;它不需要安装任何环境的语言&#xff0c; 它是所有语言所共有的&#xff0c;单独的语言&#xff0c;并且不是所有语言内部的。 它是让所有语言去和xml交互 。 注意&#xff1a; html前身是xml <></>&#xff0…

xml的介绍、xml的示例文件、xml语法介绍

xml的介绍 xml是可扩展的标记性语言 xml的主要作用&#xff1a; 1.用来保存数据&#xff0c;而且这些数据具有自我描述性 2.它可以作为项目或者模块的配置文件 3.还可以做网络传输的格式(现在以JSON为主) xml的示例文件 先创建一个文件 文件命名为xxx.xml 在xml文件中书写内…

XML文件简介

XML基本概念 单独的数据,它的含义很模糊。所以数据+含义,适用于传输数据,而不是显示数据(HTML)XML(eXtensible Markup Language),可扩展标记语言:意义+数据标签可自定义,具有自描述性纯文本文件,跨系统/平台/语言W3C标准(1998年,发布XML1.0,包括几乎所以的Unicode…

XML(一)

一&#xff0c;XML简介 XML&#xff08;EXtensible Markup Language&#xff09;&#xff1a;可扩展标记语言 XML 是一种很像HTML的标记语言。 XML 的设计宗旨是传输数据&#xff0c;而不是显示数据。 XML 标签没有被预定义。您需要自行定义标签。 XML 是 W3C 的推荐标准。…

XML文档基础及其解析

一、XML1. 概念&#xff1a;Extensible Markup Language 可扩展标记语言* 可扩展&#xff1a;标签可以自定义的。<user>、<hobby>* 功能1. 存储数据2. 在网络中传输2. XML和HTML的区别1. xml标签都是自定义的&#xff0c;html标签使预定于的2. xml的语言严格&#…

xml文件介绍

简介&#xff1a;本文主要讲解xml文件的格式&#xff0c;用途等等&#xff1b; xml概述 1.1初步认识一下xml 一段xml格式&#xff1a; 1.2什么是xml xml是传输和存储数据 html是展示数据 写一段xml文件&#xff0c;文件后缀为xml格式 所有内容必须需要一个根节点/根标签…

JavaWeb1-3学习总结(BootStrap,xml,tomcat,servlet)

1.1 BootStrap 1、概念 一个前端开发的框架&#xff0c;Bootstrap&#xff0c;来自 Twitter&#xff0c;是目前很受欢迎的前端框架。Bootstrap 是基于 HTML、CSS、JavaScript 的&#xff0c;它简洁灵活&#xff0c;使得 Web 开发更加快捷。 2、好处 定义了很多的css样式和j…

全面理解xml文件

XML XML相关概念 概述&#xff1a;Extensible Markup Language 可扩展标记语言 功能 ​ 存储数据 配置文件在网络中传输 xml和html的区别 XML标签都是自定义的&#xff0c;hmtl标签是预先定义的xml的语法严格&#xff0c;html语法松散XML是存储数据的&#xff0c;html是展示…

Java数组和方法

一、数组 1.定义&#xff1a;数组(array)是一种用于存储多个相同类型数据的存储模型。 格式1&#xff1a;数据类型[] 变量名 &#xff08;推荐使用&#xff09; 例子&#xff1a; int[ ] arr 定义了一个int类型数组&#xff0c;数组名是arr 格式2&#xff1a;数据类型 变量…

总结JS中常用的数组的方法大全

总结JS中常用的数组方法 JS中常用的数组方法总结 数组(Array)是一种复杂的数据类型&#xff0c;它属于Object(对象)类型&#xff0c;用来将一组数组合在一起&#xff0c;通过一个变量就可以访问一组数据。在使用数组时&#xff0c;经常会搭配循环语句使用&#xff0c;从而很方便…

17种数组常用方法

数组的常用方法&#xff08;内置方法&#xff1a;直接使用&#xff0c;只需按要求传递对应的参数&#xff09; 标红的为重点 一维数组&#xff1a;数组元素只有一个下标&#xff08;通过一个下标就可以定位数组中的元素&#xff09; 1.join(连接字符)&#xff1a;作用是将数…

Array数组的方法

1.Array.from() 将类数组结构转化为数组实例&#xff0c; 一参数是类数组对象即任何可迭代的结构&#xff0c;或者有一个length属性和可索引元素的结构 二参数是映射函数参数&#xff08;可选&#xff09;此函数可增强新函数的值&#xff0c; 三参数是指定映射函数中的this…

常用处理数组的方法

常用处理数组的方法 一、Es5 1.Arr.map() 数组中的每个元素会执行一次回调函数&#xff0c;结果作为一个新的数组返回&#xff0c;不改变原数组let arr [1, 2, 3, 4, 5] let newArr arr.map(x > {return x*2 // 将数组的每一项乘以2 }) console.log(newArr) // [2, 4, …

JS数组常用方法整理(14种常用方法)

目录 1.增 1.1 push(): 1.2 unshift(): 2.删 2.1 pop(): 2.2 shift() 3.改&#xff08;增、删&#xff09;&#xff1a; 3.1 splice() 4.查 4.1 slice() 5.将数组转换为字符串&#xff1a; 5.1 toString() 5.2 join() 6.数组拼接 6.1concat() 7.检测数组中是否包…

总结: 数组常用的方法

在实际开发当中, 数组和对象使用到最多的; 数组和对象有很多的方法, 这里主要探讨一下: 数组的增删改查数组的排序方式数组转换成其他数据类型的方式ES6数组新增常用的迭代方式 为什么需要数组? 数组可以存入不限数的数据, 并且可以使用下标值进行访问; 数据在数组的内部是有…

hive 宽表变竖表 长表变宽表

1.这是源数据以及需要转化的目标表. 我们的方法是 , 用 GROUP BY按照year分组 , 并且依次提取1月,2月,3月,4月的 num,具体实现 1 2 3 4 5 6 select year, max(case when month1 then money else 0 end) as M1, max(case when month2 then money else 0 end) as M2, max(case w…