博客网 >

Vigenere密码的改进
作者:分类:默认分类标签:
    Vigenere密码是一个基于单表置换的分块对称加密算法。将明文T分为长度为n的若干块(若最后一块不足则用随机数补满),密钥K长度为n。在加密时对每个明文分块Ti做Ci=(Ti+Ki)%m,解密时对每个密文分块Ci做Ti=(Ci-Ki)%m,其中m为字符空间大小。
    显然,该加密算法是一个不安全的加密算法。Vigenere算法有着致命的缺陷Ki=(Ci-Ti)%m,使得他可以被已知明文攻击完全破解。同时,利用Friedman攻击也能够完全破解该算法,只是破解难度稍大。但是,我们也可以看到,这两种破解都有着一个共同的假设:密钥长度n小于明文的长度,即相同的明文字符可能多次被相同的密钥字符加密,生成相同的密文字符。
    通过分析该算法,不难得出:如果密钥长度n足够大(至少与明文长度相当),则该算法实际上就演变成了一个OTP加密算法。也就是说,如果我们使用足够长的密钥K,并且保证其是随机的,我们就可以利用Vigenere加密算法得到一个安全的加密。但是,OTP的最大缺陷在于密钥长度太长,且密钥不能重复使用。下面,我们针对OTP的这个缺陷对Vigenere加密算法做一些改进,使之能够成为一个安全的密码算法。
    进一步的分析Vigenere算法,可以得出:使用长度分别为m和n的两个密钥来进行两轮加密,等效于使用密钥长度为m和n的最小公倍数的一个密钥进行一轮的加密(证明略)。这样,如果m、n互质,我们实际上就做到了使用长度为m+n的密钥来代替长度为m*n的密钥,从而大大的降低了密钥的长度,使得利用Vigenere算法创建OTP成为可能。
    现在,剩下的问题就是密钥的重复使用了。这里先提出一个在以太网中实现的简单解决方案,对于每个以太帧,其数据段的最大长度不得超过1500字节,也就是说,只需使用长度分别为38和39的密钥进行两轮加密,即可保证所有数据段的安全。同时,将这两个密码用公钥加密,附在数据段起始部分即可。这样,整个数据段就实现了OTP加密,其安全性完全依赖于公钥加密的强度,并且,这样做产生的不必要损耗仅为5%,且速度大大高于AES等高强度对称加密算法。
<< 元胞自动机基础 / IIS + Access 数据库... >>

专题推荐

不平凡的水果世界

不平凡的水果世界

平凡的水果世界,平凡中的不平凡。 今朝看水果是水果 ,看水果还是水果 ,看水果已不是水果。这境界,谁人可比?在不平凡的水果世界里,仁者见仁,智者见智。

中国春节的那些习俗

中国春节的那些习俗

正月是农历新年的开始,人们往往将它看作是新的一年年运好坏的兆示期。所以,过年的时候“禁忌”特别多。当然,各个地方的风俗习惯不一样,过年的禁忌也是不一样的。

评论
0/200
表情 验证码:

Romeo

  • 文章总数0
  • 画报总数0
  • 画报点击数0
  • 文章点击数0
个人排行
        博文分类
        日期归档