本篇可以看做是以前“密码史简介(对称加密以解密)”这篇的番外,附链接:
http://blog.csdn.net/jerry81333/article/details/52708379
波雷费密码 Playfair Cipher:
1854年面世,曾在一战时期被英军所使用,二战时期澳大利亚所使用(话说土澳这样真的好吗,人家德军都是One-time-pad了、、、)
具体步骤:
1. 创建密钥,或者说是5*5的密钥矩阵:
a. 选取一个英文字作密钥。除去重复出现的字母。将密钥的字母逐个逐个加入5×5的矩阵内,剩下的空间将未加入的英文字母依a-z的顺序加入。(将Q去除,或将I和J视作同一 字。)
b. 将要加密的讯息分成两个一组。若组内的字母相同,将X(或Q)加到该组的第一个字母后,重新分组。若剩下一个字,也加入X字。
c. 在每组中,找出两个字母在矩阵中的地方。
例如,取“playfair example”为密钥,得到的密钥矩阵如下图所示:
2. 加密流程(3个条件):
a. 若两个字母不在同一直行或同一横列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角。
b. 若两个字母在同一横列,取这两个字母右方的字母(若字母在最右方则取最左方的字母)。
c. 若两个字母在同一直行,取这两个字母下方的字母(若字母在最下方则取最上方的字母)。
例如,使用上例的密钥加密“Hide the gold in the tree stump”,首先转换成两两分组:
HI DE TH EG OL DI NT HE TR EX ES TU MP
更具上述密钥及条件进行转化,得到最终密文:
BM OD ZB XD NA BE KU DM UI XM MO UV IF
解密流程反之亦然。
希尔密码 Hill Cipher:
古典密码学中为数不多的能将字母频率规律隐藏起来的一种加密方式,其本质其实十分简单。
本质:
C = 密文,P = 明文,E = 加密操作,D = 解密操作,K = 密钥(在这里是多维矩阵)
C = E ( K , P ) = PK mod 26
P = D ( K , C ) = CK^-1 mod 26 = PKK^-1 = P
其本质就是运用了KK^-1 = 1的概念,至于mod 26是因为26个字母的缘故。
举例:
加密:
解密:
优点:
1. 加密矩阵阶数越大,破解所需难度也越大。
2.利用线性代数的乘法抵抗住了字符频率的攻击。
缺点:
1.线性变换的安全性很脆弱,易被攻击击破