这四个密码算法用到了矩阵。
这四个密码算法用到了矩阵,加密看懂了。解密没看懂。数学不好的悲哀啊。。。
【乘法密码(Multiplication Cipher)】
乘法密码也是一种简单的替代密码,与凯撒密码相似,凯撒密码用的是加法,而乘法密码用的自然是乘法。这种方法形成的加密信息保密性比较低。
加密公式:密文 = (明文 * 乘数) Mod 26
对于乘数密码,只有当乘数与26互质时,加密之后才会有唯一的解,因此乘数只可能有如下11种的选择:
乘数 = 3,5,7,9,11,15,17,19,21,23,25
仿射密码和希尔密码因为都用到了乘法,所以乘数也受到相同的局限。
-------------------------------------------------------------------------
【仿射密码(Affine Shift)】
仿射密码就是凯撒密码和乘法密码的结合。
加密公式:密文 = (明文 * 乘数 + 位移数) Mod 26
-------------------------------------------------------------------------
【希尔密码(Hill Cipher)】
希尔密码就是矩阵乘法密码,运用基本矩阵论原理的替换密码。每个字母当作26进制数字:A=0, B=1, C=2... 一串字母当成n维向量,跟一个n×n的密钥矩阵相乘,再将得出的结果模26。希尔密码的优点是完全隐藏了字符的频率信息,弱点是容易被已知明文攻击击破。
加密
例如:密钥矩阵
1 3
0 2
明文:HI THERE
去空格,2个字母一组,根据字母表顺序换成矩阵数值如下,末尾的E为填充字元:
HI TH ER EE
8 20 5 5
9 8 18 5
HI 经过矩阵运算转换为 IS,具体算法参考下面的说明:
|1 3| 8 e1*8+3*9=35 MOD26=9 =I
|0 2| 9 e0*8+2*9=18 MOD26=18=S
用同样的方法把“HI THERE”转换为密文“IS RPGJTJ”,注意明文中的两个E分别变为密文中的G和T。
解密
解密时,必须先算出密钥的逆矩阵,然后再根据加密的过程做逆运算。
逆矩阵算法公式:
|A B| = 1/(AD-BC) * | D -B|
|C D| |-C A|
例如密钥矩阵=
|1 7|
|0 3|
AD-BC=1*3-0*7=3 3*X=1 mod26 所以 X=9
因此
|1 7| 的逆矩阵为: 9 * |3 -7|
|0 3| |0 1|
假设密文为“FOAOESWO”
FO AO ES WO
6 1 5 23
15 15 19 15
9* |3 -7| | 6| = 9*(3*6-7*15)=-783 mod26 = 23=W
|0 1| |15| = 9*(0*6+1*15)= 135 mod26 = 5 =E
所以密文“FOAOESWO”的明文为“WEREDONE”
-------------------------------------------------------------------------
【Playfair密码(Playfair Cipher)】
Playfair将明文中的双字母组合作为一个单元对待,并将这些单元转换为双字母组合。加密后的字符出现的频率在一定程度上被均匀化。
5*5变换矩阵(I或J视为同一字符):
C I P H E
R A B D F
G K L M N
O Q S T U
V W X Y Z
加密规则:按成对字母加密
相同对中的字母加分隔符(如x)
ballon -> ba lx lo on
同行取右边:he->ec
同列取下边:dm->mt
其他取交叉:kt->mq od->tr
例如:ballon -> ba lx lo on -> db sp gs ug