查看: 1万|回复: 7

[密码学习] 希尔密码和棋盘密码

简洁模式
发表于 2010-2-25 15:03:54 | 显示全部楼层
希尔密码就是矩阵乘法密码,运用基本矩阵论原理的替换密码。每个字母当作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


【Polybius密码(Polybius Cipher)】

  也称棋盘密码,是利用波利比奥斯方阵(Polybius Square)进行加密的密码方式,产生于公元前两世纪的希腊,相传是世界上最早的一种密码。

  假设我们需要发送明文讯息 “Attack at once”, 用一套秘密混杂的字母表填满波利比奥斯方阵,像是这样:

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

  i和j视为同一个字,使字母数量符合 5 × 5 格。之所以选择这五个字母,是因为它们译成摩斯密码时不容易混淆,可以降低传输错误的机率。使用这个方格,找出明文字母在这个方格的位置,再以那个字母所在的栏名称和列名称代替这个字母。可将该讯息转换成处理过的分解形式。

  明文:A T T A C K A T O N C E
  密文:AF AD AD AF GF DX AF AD DF FX GF XF

  A,D,F,G,X也可以用数字1,2,3,4,5来代替,这样密文就成了:

  13 12 12 13 43 25 13 12 23 35 43 53
本主题帖为【历史主题】,仅楼主发布内容可以浏览。
尚未登录
您需要登录后才可以回帖 登录 | 加入学院