古典密码-vigenre密码

2017-09-28  本文已影响0人  aliasToHell

加密

vigenre密码根据包含26张字符对应表的vigenre方阵(见文末图)来实现对字符串的加密,我们将每一行视为一张密码表,其基本加密过程如下:

假设我们需要加密的明文为:hellocipherworld(由于这个表只有小写字母,暂时只加密包含小写字母的明文)

  1. 确定一个由字符组成的密钥,如: cipher(密钥用于确定加密明文的某个字符时使用哪一张密码表)

  2. 加密第一个字符h,使用密钥第一个字符c,查表第h列,第c行字符为j,所以h被加密为j

  3. 加密第二个字符e,使用密钥的第二个字符i,查表第e列,第i行字符为m,所以e被加密为m

    ...

  4. 由于密钥比明文短(当然这是不安全的不过反正这个密码现在也谈不上安全了),我们在加密明文第7个字符(i)时需要循环使用密钥cipher,即查表第i列,第c行字符为k,所以i被加密为k

  5. 按照这个方法即可完成加密,结果为jmasstkxwlvnqzak

解密

解密过程同样是查表

  1. 密文第一个字符为j,密钥第一个字符为c,查第c行中的j字符对应的是第h列,所以明文为

    ...

  2. 密文较密钥长时循环使用密钥完成解密

已知明文破解

大家可以看出加密过程是根据行,列索引查找矩阵中字符的过程,解密过程是根据行索引矩阵中的字符查找列索引的过程,而已知明文破解是根据列索引矩阵中的字符查找行索引的过程,由于vigenre矩阵的对称性,解密过程和已知明文破解过程其实是一样的。

以上具体代码实现(python)参见https://gitee.com/JanuaryJIAN/codes/4k7tvbx6ydf1q9uzws23h77

vigenre.png
上一篇 下一篇

猜你喜欢

热点阅读