棋盘密码(Polybius)

简介: 棋盘密码(Polybius)

棋盘密码(Polybius)

  • 加密对象:小写字母
  • 原理:
  • 棋盘密码是一种查表加密法,密码表如下:
1 2 3 4 5
1 a b c d e
2 f g h i,j k
3 l m n o p
4 q r s t u
5 v w x y z
  • 密文就是字符在密码表里面对应的横纵坐标,如"a"加密为"11", “y"加密为"54”
  • 特点:
  • 数字没两个一组
  • 数字范围为1~5
  • 实例:加密字符串"polybius":

查表替换: “p"对应"35”, “o"对应"34”, “l"对应"31”, “y"对应"54”, “b"对应"12”, “i"对应"24”, “u"对应"45”, “s"对应"43”。

故密文为: “35 34 31 54 12 24 45 43”

代码

# write by 2021/7/6
# 棋盘密码
# i 和 j 在同一个格子
CHECKERBOARD = "abcdefghiklmnopqrstuvwxyz"
def encrypt_polybius(string):
    ciphertext = ""
    for i in string.replace("j", "i").replace(" ", ""):
        if i in CHECKERBOARD:
            index = CHECKERBOARD.index(i)
            ciphertext += str(index // 5 + 1) + str(index % 5 + 1) + " "
        else:
            return -1
    return ciphertext.strip()
def decrypt_polybius(string):
    plaintext = ""
    lis = string.split(" ")
    try:
        for i in lis:
            index = (int(i[0])-1)*5+int(i[1])-1
            plaintext += CHECKERBOARD[index]
            if index == 9:
                plaintext += "(j)"
    except:
        return -1
    return plaintext
if __name__ == '__main__':
    ciphertext_ = encrypt_polybius("polybius")
    print(ciphertext_)
    plaintext_ = decrypt_polybius(ciphertext_)
    print(f"{plaintext_}: {ciphertext_}")


目录
相关文章
|
11月前
|
计算机视觉 Python
Opencv学习笔记(一):如何将得到的图片保存在指定目录以及如何将文件夹里所有图片以数组形式输出
这篇博客介绍了如何使用OpenCV库在Python中将图片保存到指定目录,以及如何将文件夹中的所有图片读取并以数组形式输出。
797 0
Opencv学习笔记(一):如何将得到的图片保存在指定目录以及如何将文件夹里所有图片以数组形式输出
|
云安全 安全 网络协议
安全研究所 | 伪装搜狗输入法的木马分析
近年来,黑灰产业的犯罪团伙数量急剧上升,特别是在与办公软件相关领域。这些团伙主要针对国内企业用户,通过伪装成合法的办公软件进行精心设计的诈骗和诱导行为,其主要目的是欺骗企业员工下载并激活木马病毒,以此来窃取公司资金或获取企业敏感文件。
|
安全 关系型数据库 MySQL
windows提权总结
windows提权总结
477 1
|
NoSQL Redis
Mac安装Redis(图文解说详细版)
Mac安装Redis(图文解说详细版)
Mac安装Redis(图文解说详细版)
|
Windows
msi文件解包
msi文件解包
2066 1
msi文件解包
|
弹性计算 网络协议 安全
【图文教程】阿里云服务器开放端口设置(超详细)
阿里云服务器端口怎么打开?云服务器ECS端口在安全组中开启,轻量应用服务器端口在防火墙中打开,阿里云服务器网以80端口为例,来详细说下阿里云服务器端口开放图文教程,其他的端口如8080、3306、443、1433也是同样的方法进行开启端口:
39000 2
|
5月前
|
人工智能 Linux iOS开发
音乐人必看!OpenUtau:开源AI歌声合成神器,快速打造专业级虚拟歌手,中文日文无缝切换
OpenUtau是一款开源的歌声合成工具,兼容UTAU音源库和重采样器,支持多语言界面及预渲染功能,让音乐创作更加高效便捷。
1204 15
音乐人必看!OpenUtau:开源AI歌声合成神器,快速打造专业级虚拟歌手,中文日文无缝切换
|
10月前
|
监控 Java Shell
「Mac畅玩鸿蒙与硬件7」鸿蒙开发环境配置篇7 - 使用命令行工具和本地模拟器管理项目
本篇将讲解在 macOS 上配置 HarmonyOS 开发环境的流程,聚焦 hvigorw 命令行工具的使用。我们将以创建 HelloWorld 项目为例,演示使用 hvigorw 进行项目构建、清理操作,并通过 DevEco Studio 的本地模拟器进行预览,帮助提升项目开发与调试效率。
378 3
「Mac畅玩鸿蒙与硬件7」鸿蒙开发环境配置篇7 - 使用命令行工具和本地模拟器管理项目
|
SQL 数据库 数据安全/隐私保护
BUUCTF[极客大挑战 2019]EasySQL1
BUUCTF[极客大挑战 2019]EasySQL1
|
存储 安全 API
如何进行安全可靠的API身份验证?
如何进行安全可靠的API身份验证?
1694 0