Playfair密码
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
进行加密 。
我们首先需要信息分成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。不过显然我们这里并不需要)
然后我们会对每组字母进行加密,一共会分3种情况:
- 若两个字母在同一行,会将其替换成它们右边一格位置的2个字母。比如说会将PW加密成WS。
 - 若两个字母在同一列,会将其替换成它们下边一格位置的2个字母。比如说会将TP加密成CR。
 - 若两个字母不在同一行或者同一列,那么一定会存在一个矩形使得当前两个字母是这个矩形的2个角,这时将它们替换为这个矩形的另外2个角。比如说会将PX加密成WT。

 
最后将所有内容按照这个方法进行加密就会得到
WTWSACLCRYCRQESUVUMETN
解密流程
解密的话则只需要逆着这个流程走一遍就好了:先用表格进行解密,然后将结果里用来补位的X给移除。
Playfair密码的更多相关文章
- 信息安全-1:python之playfair密码算法详解[原创]
		
转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 一.基本概念 古典密码是基于字符替换的密码.加密技术有:Caesar(恺撒)密码.Vigenere ...
 - 密码学笔记——playfair密码
		
Playfair密码(Playfair cipher 或 Playfair square)一种替换密码,1854年由查尔斯·惠斯通(Charles Wheatstone)的英国人发明. 例题: 某种 ...
 - java实现Playfair 密码
		
一种 Playfair 密码变种加密方法如下:首先选择一个密钥单词(称为 pair)(字母不重复,且都为小写字母), 然后与字母表中其他字母一起填入至一个 5x5 的方阵中,填入方法如下: 1.首先按 ...
 - javascript实现playfair和hill密码算法
		
时至期末,补习信息安全概论作业.恰巧遇古典密码学算法中的playfair算法和hill算法,用javascript语言实现起来是在有趣,边查百度边编码,顺便好好补习一下javascript基础. pl ...
 - hiho #1361 Playfair密码表
		
题目1 : Playfair密码表 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho经常用Playfair密码表加密自己的代码. 密码表是按以下步骤生成的. ...
 - python playfair
		
#########################Playfair密码######################### #约定1:若明文字母数量为奇数,在明文末尾添加一个'Z' #约定2:'I'作为 ...
 - Playfair 加密
		
题目真的好长但是意思很简单 89.加密 (15分)C时间限制:3 毫秒 | C内存限制:3000 Kb题目内容:一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重 ...
 - 算法笔记_125:算法集训之编程大题集一(Java)
		
目录 1 砝码称重 2 公式解析 3 购物券消费方案 4 机器人行走 5 角谷步数 6 矩形区域的交和并 7 矩阵变换加密法 8 控制台表格 9 拉丁方块填数字 10 立方和等式 1 砝码称重 ...
 - 实验吧  Fair Play
		
知识点:playfair密码以前没见过 Playfair密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由查尔斯 ...
 - java实现矩阵变换加密法
		
一种Playfair密码变种加密方法如下:首先选择一个密钥单词(称为pair)(字母不重复,且都为小写字母),然后与字母表中其他字母一起填入至一个5x5的方阵中,填入方法如下: 1.首先按行填入密钥串 ...
 
随机推荐
- nRF24L01芯片驱动记录
			
nRF24L01芯片驱动记录  学习完了usb,了解了部分元器件的功能以及用途后,打算在端午假期用一天的时间完成一个小目标,不过实际上是花了一天半才成功实现,现将驱动nRF24L01芯片的整个过程记 ...
 - FFmpeg开发笔记(五十三)移动端的国产直播录制工具EasyPusher
			
EasyPusher是一款国产的RTSP直播录制推流客户端工具,它支持Windows.Linux.Android.iOS等操作系统.EasyPusher采用RTSP推流协议,其中安卓版EasyPus ...
 - 第16天:信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件
			
#CDN配置: 配置1:加速域名-需要启用加速的域名 配置2:加速区域-需要启用加速的地区 配置3:加速类型-需要启用加速的资源 #参考知识: 超级Ping:http://www.17ce.com/ ...
 - 开源的键鼠共享工具「GitHub 热点速览」
			
十一长假回来,我的手放在落灰的键盘上都有些陌生了,红轴竟敲出了青轴般的响声,仿佛在诉说对假期结束的不甘. 假期回归的首更,让我们看看又有什么好玩的开源项目冲上了开源热榜.一套键盘和鼠标控制多台电脑的工 ...
 - Redis数据库常见命令
			
Redis数据库常见命令 Linux启动Redis # 启动服务 redis-server # 开启客户端 redis-cli # 关闭redis服务 shutdown #查看服务是否运行 ping ...
 - Android复习(二)应用资源——>字体
			
字体资源定义了可在应用中使用的自定义字体.字体可以是单独的字体文件或字体文件的集合,称为字体系列,并在 XML 中定义. 另请参阅如何定义 XML 中的字体,或改用可下载字体. 捆绑式字体 您可以将字 ...
 - 云原生爱好者周刊 | 使用 WASM 来写博客是什么感觉?
			
开源项目推荐 zzhack zzhack 是一个静态博客框架,是一个纯正的 WASM 应用,它由 Rust & Yew 来作为技术栈进行搭建,UI 设计比较美观,大家也可以直接使用该项目的设计 ...
 - 同步完善Docker常用操作命令
			
镜像 images_name 表示镜像名 con_name表示容器名 #获取镜像 docker pull images_name #查看已有的docker镜像 docker images #删除镜像 ...
 - MySql5.7及以上 ORDER BY 报错问题
			
一.问题 本人使用的MySql版本是8.0的 当MySql5.7及以上的版本执行带有 ORDER BY 的SQL语句时可能会报错. 例如,执行以下mysql语句: SELECT id, user_id ...
 - C语言常见概念
			
目录 1.C语言是什么? 2.编译器的选择Clion 3.第一个C语言程序 4.main函数 5.printf和库函数 6.关键字介绍 7.字符和ASCII编码 8.转义字符 9.语句和语句分类 9. ...