古典密码-波利比奥斯方阵密码Polybius

1|0波利比奥斯方阵密码Polybius简介

公元前2世纪,一个叫Polybius的希腊人设计了一种将字母编码成符号对的方法,他使用了一个称为Polybius的校验表,这个表中包含许多后来在加密系统中非常常见的成分。Polybius校验表由一个5行5列的网格组成,网格中包含26个英文字母,其中I和J在同一格中。相应字母用数对表示。在古代,这种棋盘密码被广泛使用。Polybius校验表如下

0zF6aR.png

(2,4)这个坐标既可以表示i 也可以表示 j因此破解的时候这里又会多两种情况

1|1栗子

假设明文序列为 attack at once ,使用一套秘密混杂的字母表填满波利比奥斯方阵,如下

A D F G X
A b t a l p
D d h o z k
F q f v s n
G g j c u x
X m r e w y
  1. i 和 j视为同一格
  2. 选择这五个字母,是因为它们译成摩斯密码时不容易混淆,可以降低传输错误的机率

根据上面的Polybius方阵将对应的明文进行加密。其中,A,D,F,G,X也可以用数字1,2,3,4,5来代替,这样密文就成了:

明文 A T T A C K A T O N C E
密文 AF AD AD AF GF DX AF AD DF FX GF XF
13 12 12 13 43 25 13 12 23 35 43 53

2|0相关题目

2|1题目信息

密文:ouauuuoooeeaaiaeauieuooeeiea

hint: VGhlIGxlbmd0aCBvZiB0aGlzIHBsYWludGV4dDogMTQ=

2|2题目分析

基本的解题方阵如下

0zAggK.jpg

base64解密后信息为The length of this plaintext: 14,提示长度为14,再根据密文为14×2位,可以推测位波利比奥斯方阵密码

3|0解密脚本

import itertools ciper = 'ouauuuoooeeaaiaeauieuooeeiea' head = 'aeoiu' headlist = [] num_headlist = [] # 先列举处aeiou五种的不同排序 x = itertools.permutations(head,5) for i in x: temp = "".join(i) headlist.append(temp) print(headlist) # 根据aeiou对应的12345修改ciper的对应值,便于后续的遍历得到结果 for i in headlist: temp = '' for j in ciper: temp += str(i.index(j) + 1) num_headlist.append(temp) print(num_headlist) # 将ciper对应的数字乘上比例加上96再转为ASCII码,即 可得到对应的字母 for i in num_headlist: temp = '' for j in range(0,len(i),2): xx = (int(i[j]) - 1)*5 + int(i[j+1]) + 96 # 前一个为乘上5加上后一个就正好对应了表格中的字母 if xx>ord('i'): xx+=1 temp += chr(xx) print(temp)

参考:

[BJDCTF2020]Polybius(波利比奥斯方阵密码)

Polybius密码(棋盘密码


__EOF__

本文作者Kr1pt0
本文链接https://www.cnblogs.com/labster/p/13842837.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   labster  阅读(12088)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示