文章目录
- 一、置换密码
- 1、列置换密码
- 2、周期置换密码
- 二、代换密码
- 1、单表代换密码
- 2、多表代换密码:
一、置换密码
置换密码门又称换位密码,是根据一定的规律重新排列明文,以打乱明文的结构特性。
常见的置换密码有两种,一种是列置换密码,一种是周期置换密码。
1、列置换密码
列置换是一种常见的置换密码体制,其名称是由明文遵照秘钥的规则按列换位并且按列读出明文序列得到密文而得名。
1)加密过程:
- 将明文p设定固定的分组宽度m,按行写出,每行即m个,若明文长度不是m的倍数,则不足部分按约定规则填充。得到字符矩阵。
- 将矩阵按一定的规则进行列置换
- 按行读出明文信息,即为密文。
2)解密过程:
- 将密文c以m的宽度分组,按行写出得到字符矩阵。
- 将矩阵按加密规则进行逆置换,得到新的矩阵。
- 按行读出矩阵,即为密文信息。
2、周期置换密码
周期置换密码是将明文p按固定长度m分组,然后对每组中的子串按1,2,3…m的某个置换重新排列从而得到密文,其中秘钥σ包含了分组长度信息。解密时按长度m分组,并按σ逆置换σ-1把每组子串重新排列得到明文信息。
二、代换密码
代换密码是将明文中的字符替换位其他字符的密码体制。
基本方法是建立一个代换表,加密时将待加密明文字符通过查找的方式替换为对应的密文字符,这个代换表就是秘钥。
1、单表代换密码
单表代换密码是指明文信息中相同的字母,在加密时都采用同一固定的字母来代换。单表代换又分为移位密码、基于秘钥的单表代换密码和仿射密码。
1)基于秘钥的单表代换密码
实现原理:
- 首先选取一个英文单词,去掉重复的字母只保留较前的一位,得到一个无重复的字母序列。
- 将其他字母依次写在它之后,已有的不在写入。
- 建立英文字母一一对应的关系,即字母代换表
基于秘钥的代换密码的秘钥空间长度为26!>1025
2)仿射密码:
加密:
仿射密码的加密算法就是一个线性变换,即对任意明文字符x,对应明文y=a*x+b(mod 26),其中要求a,b∈Z26,且gcd(a,26)=1,则函数e(x)称为仿射加密函数。
注: - gcd(a,26)=1,即表示a与26互素。
- 仿射密码的秘钥空间大小为:12*26=312
- 在a=1,b=3时,这种仿射密码就是著名的凯撒密码。
解密:
在求解仿射解密函数时,需要求解a在Z26上的乘法逆元a-1∈Z26,可由拓展欧几里得算法求解
解密函数为:X=a-1(e(x)-b)(mod 26)
下表是Z26上所有与26互素的元素的乘法逆元:
1-1 | 3-1 | 5-1 | 7-1 | 9-1 | 11-1 | 15-1 | 17-1 | 19-1 | 21-1 | 23-1 | 25-1 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 9 | 21 | 15 | 3 | 19 | 7 | 23 | 11 | 5 | 17 | 25 |
2、多表代换密码:
多表代换密码是以一系列代换表依次对明文进行代换的加密方法。即在明文信息中的相同字母可能不是被替换为相同字母,而是根据字母位置有不同的代换方式。
多表代换利用明文,将其分割为不同的明文组,每个明文组使用不同的代换表,就会使相同字母出现不同的代换结果。
1)Playfair密码
该密码将明文字母按两个字母一组,分成若干个单元,然后将这些明文单元替换为密文组合,替换时基于一个5*5的矩阵,该矩阵使用一个关键词构造,类似于基于秘钥的单表代换密码表。
构造方法如下 :选定一个关键词,从左到右,从上到下依次填充字母,已经填充过的不再填充,顺位后移然后将字母表中剩下的字母依次填入矩阵中,而i和j视作同一个字母。同时约定规则使第一列为第五列的下一列,第一行为第五行的下一行。
加密时对字母p1,p2的加密规则如下:
- 若p1,p2在同一行,则对应密文是紧靠p1,p2右边的字母
- 若p1.p2在同一列,则密文是紧靠p1,p2下边的字母。
- 若p1,p2,不在同一行也不在同一列,则密文是p1,p2为顶点的矩形的另外两个顶点,以行为标准对应。
- 若p1,p2相同,则插入一个事先约定的字母,并用上述方法处理
- 若明文字符数为奇数,则在明文末端插入一个事先约定好的字母。
解密:解密过程与加密过程类似。只是将右边该位了左边,下边改为了上边。
2)Vigenere密码
维吉尼亚密码是多边代换密码的典型代表。
设m为一个固定的正整数,P,C,K分别为明文空间、密文空间、密钥空间。并且P=C=K=(Z26)m,对于一个秘钥k=(k1,k2,…km).则维吉尼亚密码的加密函数为:
ek(x1,x2,…xm)=(x1+k1,x2+k2,…Xm+km)
与之对应的解密函数为:
dk(y1,y2,…ym)=(y1-k1,y2-k2,…ym-km)
3)Hill密码
希尔密码(Hill)的基本思想是利用Z26上的线性变换被n个连续的明文字母替换为n个连续的密文字母。这个替换是由秘钥决定的,而这个秘钥是一个变换矩阵,解密时只需要对密文做一次逆变换即可。
以下是一个Hill密码加解密过程:
加密:
解密:
4)转轮密码机
准轮密码机是由一个输入键盘和一组转轮组组成,每个转轮上有26个字母随意组合,转路之间通过齿轮连接,当一个转动时可以带动另一个转动。为了使准轮更安全,一般各个准轮的速度都不一样。
以下是一个转轮密码加密图解:
在一个转轮密码机中,每个齿轮都可能是转动的,其规律是当快转子转动26次后中转子转动一次,慢转子同理。所以在一个三轮转轮机中,在加解密262626次后,转轮机就会恢复初始状态。,所以一个转轮机的周期长度取决于转轮数m,则周期长度为26m.