棋盘密码(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_}")


目录
相关文章
|
存储 算法 程序员
【期末计算机组成原理速成】第三章:存储器
【期末计算机组成原理速成】第三章:存储器
632 0
|
安全 关系型数据库 MySQL
windows提权总结
windows提权总结
575 1
|
NoSQL Redis
Mac安装Redis(图文解说详细版)
Mac安装Redis(图文解说详细版)
Mac安装Redis(图文解说详细版)
|
3月前
|
编解码 调度 图形学
腾讯混元世界模型1.1开源:支持多视图及视频输入,单卡部署,秒级生成_魔搭ModelScope社区-ModelScope魔搭社区
混元世界模型1.1(WorldMirror)发布,支持多视图、视频输入,单卡秒级生成3D场景。兼容CG管线,开源可部署,实现点云、深度、相机等多任务统一预测,性能领先。
355 1
|
9月前
|
人工智能 Linux iOS开发
音乐人必看!OpenUtau:开源AI歌声合成神器,快速打造专业级虚拟歌手,中文日文无缝切换
OpenUtau是一款开源的歌声合成工具,兼容UTAU音源库和重采样器,支持多语言界面及预渲染功能,让音乐创作更加高效便捷。
2448 15
音乐人必看!OpenUtau:开源AI歌声合成神器,快速打造专业级虚拟歌手,中文日文无缝切换
|
存储 安全 API
如何进行安全可靠的API身份验证?
如何进行安全可靠的API身份验证?
1867 0
|
监控 Java Shell
「Mac畅玩鸿蒙与硬件7」鸿蒙开发环境配置篇7 - 使用命令行工具和本地模拟器管理项目
本篇将讲解在 macOS 上配置 HarmonyOS 开发环境的流程,聚焦 hvigorw 命令行工具的使用。我们将以创建 HelloWorld 项目为例,演示使用 hvigorw 进行项目构建、清理操作,并通过 DevEco Studio 的本地模拟器进行预览,帮助提升项目开发与调试效率。
644 3
「Mac畅玩鸿蒙与硬件7」鸿蒙开发环境配置篇7 - 使用命令行工具和本地模拟器管理项目
|
Web App开发 JavaScript 前端开发
Vue上传图片裁剪预览插件vue-img-cutter的使用
Vue上传图片裁剪预览插件vue-img-cutter的使用
806 0
|
人工智能 Kubernetes Serverless
全球首发!容器可以Serverless形态交付算力,随需随调,太爽了!
全球首发!容器可以Serverless形态交付算力,随需随调,太爽了!
71179 40
|
自然语言处理 UED
ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)
ROSTCM6软件下载及语义网络分析详细操作教程(附网盘链接)
40063 1

热门文章

最新文章