Playfair密码

Playfair cipher (普莱费尔密码)一种古典对称式密码,是首个双字母替换的加密法。尽管以现在的眼光来看这种加密是非常不安全的,但是它加密的过程还是蛮有意思的。

这种加密方式所需要的就只有一张\(5 \times 5\)的表格,比如说像这样:

1 2 3 4 5
E A C G U
F M O Z Y
K D P W S
L Q R V N
B H T X I

由于英文字母共有26个,我们一般会将I和J视为同一个字母,或者也可以移除Q。

加密流程

假设我们现在有一个flag为PP{we_are_not_playing_fair}, 想要将其当成

P P W E A R E N O T P L A Y I N G F A I R

进行加密 。

  1. 我们首先需要信息分成2个字母为一组,也就是

    PP WE AR EN OT PL AY IN GF AI R

    当出现一组内2个字母相同的情况时,我们需要在其中间插入一个X。于是会变成

    PX PW EA RE NO TP LA YI NG FA IR

    (当最后剩下一个字母单独一组的时候,需要在结尾加上X。不过显然我们这里并不需要)

  2. 然后我们会对每组字母进行加密,一共会分3种情况:

    1. 若两个字母在同一行,会将其替换成它们右边一格位置的2个字母。比如说会将PW加密成WS。
    2. 若两个字母在同一列,会将其替换成它们下边一格位置的2个字母。比如说会将TP加密成CR。
    3. 若两个字母不在同一行或者同一列,那么一定会存在一个矩形使得当前两个字母是这个矩形的2个角,这时将它们替换为这个矩形的另外2个角。比如说会将PX加密成WT。

最后将所有内容按照这个方法进行加密就会得到

WTWSACLCRYCRQESUVUMETN

解密流程

解密的话则只需要逆着这个流程走一遍就好了:先用表格进行解密,然后将结果里用来补位的X给移除。

Playfair密码的更多相关文章

  1. 信息安全-1:python之playfair密码算法详解[原创]

    转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 一.基本概念 古典密码是基于字符替换的密码.加密技术有:Caesar(恺撒)密码.Vigenere ...

  2. 密码学笔记——playfair密码

     Playfair密码(Playfair cipher 或 Playfair square)一种替换密码,1854年由查尔斯·惠斯通(Charles Wheatstone)的英国人发明. 例题: 某种 ...

  3. java实现Playfair 密码

    一种 Playfair 密码变种加密方法如下:首先选择一个密钥单词(称为 pair)(字母不重复,且都为小写字母), 然后与字母表中其他字母一起填入至一个 5x5 的方阵中,填入方法如下: 1.首先按 ...

  4. javascript实现playfair和hill密码算法

    时至期末,补习信息安全概论作业.恰巧遇古典密码学算法中的playfair算法和hill算法,用javascript语言实现起来是在有趣,边查百度边编码,顺便好好补习一下javascript基础. pl ...

  5. hiho #1361 Playfair密码表

    题目1 : Playfair密码表 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho经常用Playfair密码表加密自己的代码. 密码表是按以下步骤生成的. ...

  6. python playfair

    #########################Playfair密码######################### #约定1:若明文字母数量为奇数,在明文末尾添加一个'Z' #约定2:'I'作为 ...

  7. Playfair 加密

    题目真的好长但是意思很简单 89.加密 (15分)C时间限制:3 毫秒 | C内存限制:3000 Kb题目内容:一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重 ...

  8. 算法笔记_125:算法集训之编程大题集一(Java)

     目录 1 砝码称重 2 公式解析 3 购物券消费方案 4 机器人行走 5 角谷步数 6 矩形区域的交和并 7 矩阵变换加密法 8 控制台表格 9 拉丁方块填数字 10 立方和等式   1 砝码称重 ...

  9. 实验吧 Fair Play

    知识点:playfair密码以前没见过 Playfair密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由查尔斯 ...

  10. java实现矩阵变换加密法

    一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下: 1.首先按行填入密钥串 ...

随机推荐

  1. 消毒 url 和 html (url encode and sanitizer html )

    更新: 2020-06-24 FromRoute vs FromQuery decode FromRoute 是不会 auto decode 的, query string 就会 这个是微软默认的设置 ...

  2. ASP.NET Core Library – FluentValidation

    前言 之前就有写过学习笔记: Asp.net core 学习笔记 Fluent Validation 但都是用一点记入一点,零零散散不好读, 这一篇来稍微整理一下. 主要参考: Fluent Vali ...

  3. 学习问题记录:RocketMQ集成到SpringBoot后,消费者无法自动进行消息消费。

    情况说明 在SpringBoot中集成了RocketMQ,实践过程中,通过RocketMQ DashBoard观察,生产者可以正常将进行消息提交:通过日志及DashBoard观察,消费者成功在Rock ...

  4. webpack 5.88.2

    原理 webpack的运行过程大致可以分为以下几个步骤:webpack的运行过程实际上就是等待上一个钩子结束调用下一个钩子的过程 初始化:webpack接收命令行参数或配置文件,创建一个Compile ...

  5. GIS转码的秋招历程与踩坑经历

      本文介绍地理信息科学(GIS)专业的2024届应届生,在研三上学期期间,寻找后端研发.软件开发等IT方向工作的非科班转码秋招情况.   首先,这篇文章一开始写于2023年年底,当时为了参加一个征文 ...

  6. 运输小猫娘之再续 5k 传奇之寻找人道主义素数

    原文 前情提要 本章主角 5k_sync_closer 第一章 从再续前缘到苦心寻找满足最优条件的人道主义美丽素数 上回书说到,5k 因为拯救大家被炸断了 \(1000000007\) 米中的十五千米 ...

  7. 逆向WeChat(七)

    上篇介绍了如何通过嗅探MojoIPC抓包小程序的HTTPS数据. 本篇逆向微信客户端本地数据库相关事宜. 本篇在博客园地址https://www.cnblogs.com/bbqzsl/p/184235 ...

  8. logback.xml文件

    <?xml version = "1.0" encoding="UTF-8"?> <configuration debug = "f ...

  9. TCP 与 UDP 的区别有哪些

    什么是 TCP TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议 什么是 UDP UDP(User Datagra ...

  10. apisix~按域名进行请求转发

    路由route 路由(Route)是请求的入口点,它定义了客户端请求与服务之间的匹配规则.路由可以与服务(Service).上游(Upstream)关联,一个服务可对应一组路由,一个路由可以对应一个上 ...