加密解密工具 普莱费尔密码(转换密码法里密钥有重复字母吗)

2023-03-18 18:45:48 听风 思思

普莱费尔密码(英文:Playfair Cipher 或 Playfair Square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatstone)的英国人发明。

简介

经莱昂·普莱费尔提倡在英国军地和政府使用。它有一些不太明显的特征:密文的字母数一定是偶数;任意两个同组的字母都不会相同,如果出现这种字符必是乱码和虚码。

它使用方便而且可以让频度分析法变成瞎子,在1854到1855年的克里米亚战争和1899年的布尔战争中有广泛应用。但在1915年的一战中被破译了。

编写分三步:

1.编制密码表 

2.整理明文 

3.编写密文 构成部分:

1.密钥 

2.明文

3.密文

4.注明的某个字母代替的另一个字母。

算法

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

工具链接:

古典密码的置换密码

①加法密码

A和B是有 n个字母的字母表。

定义一个由A到B的映射:f:A→B

f(ai )= bi=aj

j=i+k mod n

加法密码是用明文字母在字母表中后面第 k个字母来代替。

K=3 时是著名的凯撒密码。

恺撒密码——历史上第一个密码技术

“恺撒密码”是古罗马恺撒大帝在营救西塞罗战役时用来保护重要军情的加密系统(《高卢战记》)。

②乘法密码

A和B是有n个字母的字母表。?定义一个由A到B的映射:f:A→B f(ai )= bi= aj j=ik mod n 其中,(n,k)=1。注意:只有(n,k)=1,才能正确解密。

③密钥词组代替密码

随机选一个词语,去掉其中的重复字母,写到矩阵的第一行,从明文字母表中去掉这第一行的字母,其余字母顺序写入矩阵。然后按列取出字母构成密文字母表 单表代替密码的安全性不高,一个原因是一个明文字母只由一个密文字母代替。可以利用频率分析来破译。故产生了更为安全的多表代换密码,即构造多个密文字母表,在密钥的控制下用以一系列代换表依次对明文消息的字母序列进行代换。著名的多表代替密码有Vigenere密码等。

① Vernam密码

明文、密文、密钥都表示为二进制位:

M=m1,m2,… ,mn K =k1,k2,… ,kn C =c1,c2,… ,cn

②Playfair密码

用密钥控制生成矩阵,然后每两个字母为单位进行代换。

③Hill密码(乘积密码)

建立在矩阵相乘的基础上,但不能抵抗已知明文攻击。

playfair密码的加密

第一步是编制密码表。在这个5*5的密码表中,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉。如:密钥是Live and learn,去掉后则为liveandr。如果密钥过长可占用第二列或行。

如密钥crazy dog,可编制成 C O H M T R G I N U A B J P V Y E K Q W D F L S X 第二步整理明文。将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。

如,communist,应成为co,mx,mu,ni,st。 最后编写密文。对明文加密规则如下:

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

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

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

如,依照上表,明文where there is life,there is hope.

可先整理为wh er et he re is li fe th er ei sh op ex

然后密文为:kt yg wo ok gy nl hj of cm yg kg lm mb wf

将密文变成大写,然后几个字母一组排列。

如5个一组就是KTYGW OOKGY NLHJO FCMYG KGLMM BWF

密码学(二)之代换密码

上一讲中,我们讲移位密码其实是将字母表中的字母一一对应到各数字,然后通过数字平移来进行加密,古典密码学中还有一种比较有名的加密方法,就是将明文中的字母表对应到一套密文的字母表,这种加密方法我们叫 代换密码(substiution cipher) 或叫 替换密码 ,下图就是一个简单的代换密码对应表

上面所说,代换密码其实就是将明文里的字母按照字母表替换成密文里的字母,还是举一个例子,假设现在有一个字符“welcome to china”,根据上面的密码替换表,将明文里面的每个字母依次换成对应的密文,如下:

这样就可以得到密文CXGHBEXQBHTJNW

代换密码的解密非常简单,只要将加密的替换表进行反向操作,这里不再操作

这里可以发现,代换密码主要是要建立起一套明文与密文之间的加密对应的替换关系,只要有这套密码替换表,加、解密就变得很容易

上一讲我们知道,移位密码其实是很好破解的,因为密钥总量一共就26位,只要我们试26次,就一定能试出一个正解的,那么代换密码是也可以通过穷举的方式来破解呢?

我们知道代换密码是把明文的26个字母随机对应密文的26个字母上,也就意味着明文中第一个字母a可以对应到密文中A,B,C,D…Z 26个字母中的任一个,以此类推,我们就可以计算出代换密码的密钥总数为:

像这种一种密码能够使用的所有密钥的集合,叫做 密钥空间(keyspace)

上面的密钥的量非常大,用穷举法来破译几乎是不可能的。

使用穷举法不能破译,但并不能说明就是安全的,我们可以使用 频率分析 来破译代换密码,频率分析就是利用明文中的字母出现频率与密文中的字母的出现频率一致这一特性,

下面是【密码学原理与实践】书中的一个例子,可以参考一下

现假设有一段密文如下,现需将其解密出明文

这种密文的频率分析如下图:

根据 英文字母出现的频率 排序统计,一般的排序是这样的e,t,a,o,I,n,s,h,r,d,l,u,c,m,f,w,y,p,v,b,g,k,j,q,x,z 而且一般英语文章中出现频率最高的的字母是e,这一点基本不会错的。

根据上图所示,字母Z出现的次数是20,远远高于其它密文字母,所以我们可以假设Z-e。其它出现至少10余次的官方字母是C,D,F,J,M,R,Y,我们希望这些字母对应的是

e t a o l n s h r中的一个子集,

我们现在假设了Z-e,现注意一下形如-Z, Z-的两字母组,我们发现出现这种类型的最一般的两字母组是DZ和ZW,各都出现了4次;NZ和ZU出现3次,RZ HZ XZ FZ ZR ZV ZC ZD ZJ各出现2次;又因ZW出现4次,而WZ一次也未出现,同时W比许多其它字母出现的次娄少,所以我们可以假设W-d,又因为DZ出现4次而ZD出现2次,故可猜测D是{r,s,t}中的任一个,具体是哪个还不清楚。

如上面猜测, Z-, D-d,再看看密文并注意到ZRW出现在密文的开始部分,RW后面也出现过,因为R在密文频繁地出现,而nd是一个常见的两字母组,所以我们可以假设R-n作为可能的情况,这样我们便有了如下的形式

接下来我们可以试试N-h,因为NZ是一个常见的两字组而ZN不是一个常见的两字母组,如果这个猜测是正确的,则明文ne-ndhe很可能说明C-a,结合这些收市,我们又进一步有:

现在考虑出现次数高的密文字母M,由前面分析,密文段RNM密钥成nh-,这说明h-是一个词的开头,所以M很可能是一个元音,因为已经使用了a和e,所以猜测M-{i或o},因为ai是一个比ao出现次数更高的明文组,所以首先猜测M-I,这样就有:

下面需要确定明文o对应的密文,因为为是一个经常出现的字母,所以我们猜测相应的密文字母是D F J Y 中的一个,Y似乎最有可能,否则将得到长元音,即从CFM或CJM中得到aoi,因此假设Y-o。

剩下密文字母中三个最高频率的字母是D F J,我们猜测他们以某种次序解密成r s t, 三字母NMD两次出现说明很可能D-s,对应的明文三字母组为his,HNCMF可能是chair的加密,说明F-r,H-c,同时排除J-t,于是我们有了:

有了上面的提示,就很容易确定出明文,解密明文如下

【密码学原理与实践(第三版)】

【图解密码技术】

替代密码的替代密码的分类

根据密码算法加解密时使用替换表多少的不同,替代密码又可分为单表替代密码和多表替代密码。

单表替代密码的密码算法加解密时使用一个固定的替换表。单表替代密码又可分为一般单表替代密码、移位密码、仿射密码、密钥短语密码。

多表替代密码的密码算法加解密时使用多个替换表。 多表替代密码有弗吉尼亚密码、希尔(Hill)密码、一次一密钥密码、Playfair密码。 单表替代密码对明文中的所有字母都使用一个固定的映射(明文字母表到密文字母表)。设A={a0, a1,…, an-1}为包含了n个字母的明文字母表;

B={b0, b1,…, bn-1} 为包含n个字母的密文字母表,单表替代密码使用了A到B的映射关系:f:A→B, f ( ai )= bj

一般情况下,f 是一一映射,以保证加密的可逆性。加密变换过程就是将明文中的每一个字母替换为密文字母表的一个字母。而单表替代密码的密钥就是映射f或密文字母表。经常密文字母表与明文字母表的字符集是相同的,这时的密钥就是映射f。下面给出几种典型的单表替代密码。

⒈一般单表替代密码

一般单表替代密码的原理是以26个英文字母集合上的一个置换π为密钥,对明文消息中的每个字母依次进行变换。可描述为:明文空间M和密文空间C都是26个英文字母的集合,密钥空间K={π:Z26→Z26|π是置换},是所有可能置换的集合。

对任意π∈K,定义:

加密变换:eπ(m)=π(m)=c

解密变换:dπ(c) = π-1(c)=m, π-1是π的逆置换。

例:设置换π的对应关系如下:

a b c d e f g h i j k l m n o p q r s t u v w x y z

q w e r t y u i o p a s d f g h j k l z x c v b n m

试用单表替代密码以π为密钥对明文消息message加密,然后写出逆置换 ,并对密文解密。

解:以π为密钥用单表替代密码对明文消息message加密,所得

密文消息为: π(m) π(e) π(s) π(s) π(a) π(g) π(e)=dtllqut

一般单表替代密码算法特点:

▲密钥空间K很大,|K|=26!=4×10^26 ,破译者穷举搜索计算不可行,1微秒试一个密钥,遍历全部密钥需要1013 年。

▲移位密码体制是替换密码体制的一个特例,它仅含26个置换做为密钥空间。

密钥π不便记忆。

▲针对一般替换密码密钥π不便记忆的问题,又衍生出了各种形式单表替代密码。

⒉移位密码

明文空间M、密文空间C都是和密钥空间K满足,即把26个英文字母与整数0,1,2,…,25一一对应。

加密变换,E={E:Z26→Z26, Ek (m) = m + k (mod26)| m∈M, k∈K }

解密变换,D={D:Z26→Z26, Dk (c) = c-k (mod26)| c∈C, k∈K }

解密后再把Z26中的元素转换英文字母。

显然,移位密码是前面一般单表替代密码的一个特例。当移位密码的 密钥k=3时,就是历史上著名的凯撒密码(Caesar)。根据其加密函数特 点,移位密码也称为加法密码。

⒊仿射密码

仿射密码也是一般单表替代密码的一个特例,是一种线性变换。仿射密码的明文空间和密文空间与移位密码相同,但密钥空间为 K={(k1,k2)| k1,k2∈Z26,gcd(k1,26)=1}

对任意m∈M,c∈C,k = (k1,k2)∈K,定义加密变换为 c = Ek (m) = k1 m +k2 (mod 26)

相应解密变换为: m = Dk (c) = k1 (c-k2) (mod 26)

其中,K1 k1=1mod26 。很明显,k1=1时即为移位密码,而k2=1则称为乘法密码。

⒋密钥短语密码

选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中的其它字母依次写于此字母串后,就可构造出一个字母替代表。当选择上面的密钥进行加密时,若明文为“china”,则密文为“yfgmk”。显然,不同的密钥可以得到不同的替换表,对于明文为英文单词或短语的情况时,密钥短语密码最多可能有26!=4×1026个不同的替换表。 单表替代密码表现出明文中单字母出现的频率分布与密文中相同, 多表替代密码使用从明文字母到密文字母的多个映射来隐藏单字母出现 的频率分布,每个映射是简单替代密码中的一对一映射多表替代密码将 明文字母划分为长度相同的消息单元,称为明文分组,对明文成组地进 行替代,同一个字母有不同的密文,改变了单表替代密码中密文的唯一 性,使密码分析更加困难。

多表替代密码的特点是使用了两个或两个以上的替代表。著名的维吉尼亚密码和Hill密码等均是多表替代密码。

⒈维吉尼亚密码

维吉尼亚密码是最古老而且最著名的多表替代密码体制之一,与位移密码体制相似,但维吉尼亚密码的密钥是动态周期变化的。

该密码体制有一个参数n。在加解密时,同样把英文字母映射为0-25的数字再进行运算,并按n个字母一组进行变换。明文空间、密文空间及密钥空间都是长度为n的英文字母串的集合,因此可表示

加密变换定义如下:

设密钥 k=(k1,k2,…,kn), 明文m=(m1,m2,…,mn), 加密变换为:

Ek(m)=(c1,c2,…,cn),

其中ci(mi + ki)(mod26),i =1,2,…,n

对密文 c=(c1,c2,…,cn), 解密变换为:

Dk(c)=(m1,m2,…,mn), 其中 mi=(ci -ki)(mod26),i =1,2,…,n

⒉希尔(Hill)密码

Hill密码算法的基本思想是将n个明文字母通过线性变换,将它们转换为n个密文字母。解密只需做一次逆变换即可。

⒊一次一密密码(One Time Pad)

若替代码的密钥是一个随机且不重复的字符序列,这种密码则称为一次一密密码,因为它的密钥只使用一次。该密码体制是美国电话电报公司的Joseph Mauborgne在1917年为电报通信设计的一种密码,所以又称为Vernam密码。Vernam密码在对明文加密,前首先将明文编码为(0,1)序列,然后再进行加密变换。

设m=(m1 m2 m3 … mi …)为明文,k=(k1 k2 k3 … ki …)为密钥,其中mi,ki ∈(0,1), i≥1, 则加密变换为: c=(c1 c2 c3 … ci …) ,其中ci = mi Aring; ki , i≥1,

这里为模2加法(或异或运算)

解密变换为:

m=(m1 m2 m3 … mi …) ,其中mi = ci Aring; ki , i≥1,

在应用Vernam密码时,如果对不同的明文使用不同的随机密钥,这时Vernam密码为一次一密密码。由于每一密钥序列都是等概率随机产生的,敌手没有任何信息用来对密文进行密码分析。香农(Claude Shannon)从信息论的角度证明了这种密码体制在理论上是不可破译的。但如果重复使用同一个密钥加密不同的明文,则这时的Vernam密码就较为容易破译。

若敌手获得了一个密文c=(c1 c2 c3 … ci …) 和对应明文m=(m1 m2 m3 … mi …) 时,就很容易得出密钥 k=(k1 k2 k3 … ki …) ,其中ki = ciAring; mi,i≥1。 故若重复使用密钥,该密码体制就很不安全。

实际上Vernam密码属于序列密码,加密解密方法都使用模2加,这使软

硬件实现都非常简单。但是,这种密码体制虽然理论上是不可破译的,然而

在实际应用中,真正的一次一密系统却受到很大的限制,其主要原因在于该

密码体制要求:

① 密钥是真正的随机序列;

② 密钥长度大于等于明文长度;

③ 每个密钥只用一次(一次一密)。

这样,分发和存储这样的随机密钥序列,并确保密钥的安全都是很因难

的;另外,如何生成真正的随机序列也是一个现实问题。因此,人们转而寻

求实际上不对攻破的密码系统。

⒋Playfair密码

Playfair密码是一种著名的双字母单表替代密码,实际上Playfair密码属于一种多字母替代密码,它将明文中的双字母作为一个单元对待,并将这些单元转换为密文字母组合。替代时基于一个5×5的字母矩阵。字母矩阵构造方法同密钥短语密码类似,即选用一个英文短语或单词串作为密钥,去掉其中重复的字母得到一个无重复字母的字符串,然后再将字母表中剩下的字母依次从左到右、从上往下填入矩阵中,字母I,j占同一个位置。

换位密码的加密方法

加密换位密码通过密钥只需要对明文进行加密,并且重新排列里面的字母位置即可。具体方法如下

1、基于二维数组移位的加密算法

给定一个二维数组的列数,即该二维数组每行可以保存的字符个数。再将明文字符串按行依次排列到该二维数组中。最后按列读出该二维数组中的字符,这样便可得到密文。

2、换位解密算法(基于二维数组移位的解密算法)

先给定一个二维数组的列数,即该二维数组每行可以保存的字符个数,并且这个数应该和加密算法中的一致。接下来将密文字符串按列一次性排列到该二维数组中。最后按行读出该二维数组中的字符即可。

3、换位加密算法

首先按照密钥排列顺序:0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ将想要加密的明文加密,然后列出表格,找出对应的字母,就是密钥。然后对他们进行换位加密,就是将表格的第二行依据密钥排列顺序进行排序以便得到加密后的密文。

扩展资料

数据加密技术的分类

1、专用密钥

又称为对称密钥或单密钥,加密和解密时使用同一个密钥,即同一个算法。单密钥是最简单方式,通信双方必须交换彼此密钥,当需给对方发信息时,用自己的加密密钥进行加密,而在接收方收到数据后,用对方所给的密钥进行解密。当一个文本要加密传送时,该文本用密钥加密构成密文,密文在信道上传送,收到密文后用同一个密钥将密文解出来,形成普通文体供阅读。

2、对称密钥

对称密钥是最古老的,一般说“密电码”采用的就是对称密钥。由于对称密钥运算量小、速度快、安全强度高,因而如今仍广泛被采用。它将数据分成长度为64位的数据块,其中8位用作奇偶校验,剩余的56位作为密码的长度。首先将原文进行置换,得到64位的杂乱无章的数据组,然后将其分成均等两段;第三步用加密函数进行变换,并在给定的密钥参数条件下,进行多次迭代而得到加密密文。

3、公开密钥

又称非对称密钥,加密和解密时使用不同的密钥,即不同的算法,虽然两者之间存在一定的关系,但不可能轻易地从一个推导出另一个。非对称密钥由于两个密钥(加密密钥和解密密钥)各不相同,因而可以将一个密钥公开,而将另一个密钥保密,同样可以起到加密的作用。公开密钥的加密机制虽提供了良好的保密性,但难以鉴别发送者,即任何得到公开密钥的人都可以生成和发送报文。

4、非对称加密技术

数字签名一般采用非对称加密技术(如RSA),通过对整个明文进行某种变换,得到一个值,作为核实签名。接收者使用发送者的公开密钥对签名进行解密运算,如其结果为明文,则签名有效,证明对方的身份是真实的。数字签名不同于手写签字,数字签名随文本的变化而变化,手写签字反映某个人个性特征,是不变的;数字签名与文本信息是不可分割的,而手写签字是附加在文本之后的,与文本信息是分离的。

参考资料来源:百度百科-换位密码