密码学笔记——playfair密码

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

例题:

某种加密方式,玩一玩吧 密钥:shiyanb 密文:KQSAMFPAOPMFPA hint:一律采用横向

Hint: key小写

1、编制密码表

编一个5*5的密码表,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序,如果密钥过长可占用第二列或行。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉(它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待,英语中z使用最少,可以去掉它)。

例:密钥是Live and learn,去掉后则为liveandr

密钥:shiyanb 可编成

s    h     i      y     a

n    b     c     d     e

f     g     j      k      l

m   o     p     q      r

t     u     v     w      x

2、整理明文/密文,将明文/密文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。

密文: KQSAMFPAOPMFPA

KQ  SA  MF  PA  OP  MF  PA

3、解密规则

(1) 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。

(2) 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。

(3)若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。

密文:KQ   SA    MF    PA    OP    MF    PA

明文:dk    ay     fn       ir     mo     fn       ir

                  

4、加密规则

(1)若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,fg对应gj,mr对应om

(2) 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。

(3)若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,ir对应pa或ap。

注:本笔记参考文献https://baike.baidu.com/item/playfair%E5%AF%86%E7%A0%81/8999814?fr=aladdin

----------------------------------------------------------------分割线---------------------------------------------------------

ps:萌新一枚,本文纯为学习笔记,以防某日犯傻忘记--。如有不妥处,望大佬们赐教~

时间: 2024-11-07 12:41:31

密码学笔记——playfair密码的相关文章

密码学笔记——希尔密码

希尔密码(Hill Cipher),是运用基本矩阵论原理的替换密码,每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的矩阵相乘,再将得出的结果mod26.用作加密的矩阵(即密匙)必须是可逆的,否则就不可能译码.只有矩阵的行列式和26互质,才是可逆的. 例题: 在线代的课本上出现了一堆神秘字母 dloguszijluswogany 而旁边的矩阵是 1 2 0 1 快找出flag吧 key格式:simCTF{} 1.求矩阵 的逆矩阵.    即   求逆

[Offer收割]编程练习赛6 题目1 : Playfair密码表 (密码学——模拟)

传送门 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho经常用Playfair密码表加密自己的代码. 密码表是按以下步骤生成的. 随机选择一个只包含大写字母的单词S作为密钥. 将S中的所有字母J替换为字母I. 将S中的字母依次填写进一个5x5的矩阵,按照从上到下.从左到右的顺序填充格子.填充过程中略过已经在密码表中的字母. 将'A'-'I', 'K'-'Z'(除去J之外的所有大写字母)中没有出现在密码表中的大写字母按照字母表顺序填入矩阵剩余的格子中.

密码学笔记——eval(function(p,a,c,k,e,d) 加密破解

密码学笔记--eval(function(p,a,c,k,e,d) 的加密破解 例题: 小明某天在看js的时候,突然看到了这么一段代码,发现怎么也理不出代码逻辑,你能帮帮他吗? 格式:SimCTF{} eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.rep

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

转发注明出处: http://www.cnblogs.com/0zcl/p/6105825.html 一.基本概念 古典密码是基于字符替换的密码.加密技术有:Caesar(恺撒)密码.Vigenere(维吉尼尔)密码.Playfair密码.Hill密码-- 明文:未经过加密的信息:密文:加密后的信息 加密解密的过程:如下图 二.Caesar密码 这里我先简单讲下恺撒密码,咸觉挺简单的,后面再主要讲Playfair算法原理与编程. 基本原理: 在开拓罗马帝国的时候,恺撒担心信使会阅读他送给士兵的命

playfair密码java实现

这次,使用java来模拟现实playfair密码加密解密过程 import java.util.HashSet; import java.util.Scanner; public class Test1 { public static char a[][] = new char[5][5]; public static String Encryptkey = ""; public static void main(String[] args) { // TODO Auto-genera

算法笔记_124:密码脱落(Java)

一 问题描述 X星球的考古学家发现了一批古代留下来的密码.这些密码是由A.B.C.D 四种植物的种子串成的序列.仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串).由于年代久远,其中许多种子脱落了,因而可能会失去镜像的特征. 你的任务是:给定一个现在看到的密码串,计算一下从当初的状态,它要至少脱落多少个种子,才可能会变成现在的样子. 输入一行,表示现在看到的密码串(长度不大于1000)要求输出一个正整数,表示至少脱落了多少个种子. 例如,输入:ABCBA则程序应该输出:0 再例

playfair密码解密加密

#include #include #include #include int A[1000][1000];//转化矩阵 int a[1000][1000];//单位矩阵[A E] int B[1000][1000];//矩阵的逆矩阵A^(-1) int ming[1000][1000];//明文矩阵 int mi[1000][1000];//密文矩阵 int n;//矩阵的阶数 void input()//输入数据 { int i, j; for( i = 1; i <= n; i++ ) f

Android笔记-5-EditText密码和Checkbox二选一

EditText密码:明文和密文 密文: 1 public class MainActivity extends Activity { 2 3 private EditText password = null; 4 @Override 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main

密码学基础知识(三)古典密码

说完了前面那些,想起个事,本系列依据内容主要来自<现代密码学>马春光编著.我就是学这本书的. 好了,古典密码就是古时候的密码,哈哈,逗你玩的,shannon的保密系统的通信理论发表前的都是古典密码,会在密码学简史中介绍这位牛人的. 学习古典密码学的意义:学习设计原理和分析方法 古典密码也是,俩门派:置换和代换,顾名思义,一个是换了个原来有的,一个是换了个原来没有的.学术点讲就是前者明文和密文空间一样,后者 不一样.你要是问我啥是明文空间和密文空间啊,我就呵呵.是M 和 C.m明文的集合,c密文