维吉尼亚密码(又译维热纳尔密码)是使用一系列凯撒密码组成密码字母表的加密算法,属于多表密码的一种简单形式。
为了说清楚维吉尼亚密码得从移位替换密码说起,比较典型的就是凯撒密码。
恺撒密码是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。
例如,当偏移量是3的时候,所有的字母A将被替换成D,B变成E,以此类推。
原文 F l y i n t h e s k y
密文 I O B L Q W K H V N B
因为概率论的出现这种简单的移位或替换就容易破解了,其原理很简单,英文中字母出现的频率是不一样的。比如字母e是出现频率最高的,占12.7%;其次是t,9.1%;然后是a,o,i,n等,最少的是z,只占0.1%。
英语中字母频率统计
除了英语,其它语言也有详细统计。
各语言中字母频率统计
只要字符总量足够,全部收集到一起,统计各个字符出现的频率,然后再加上字母前后的关联关系,以及所要加密的语言本身语法搭配就可大幅度降低字母
的排列组合的可能性,这样密码就破解了。
当然维吉尼亚密码也属于古典密码学的范畴,都是对单个字符或符号进行移位或替代
维吉尼亚加密原理
核心:为了掩盖字母使用中暴露的频率特征,解决的办法就是用多套符号代替原来的文字。
比如原来的字母是A,从前只把它替换成F,现在把它替换成F或者G这两个。那什么时候用F什么时候用G呢?可以自行规定,比如说,字母在奇数位时用F代替,字母在偶数位时用G代替。
这样频率分析法暂时失效了。
而且,多套符号加密法并没满足于2~3套,后来典型使用的是26套,这就是第三代密码“维吉尼亚加密法”。
它是一个表格,第一行代表原文的字母,下面每一横行代表原文分别由哪些字母代替,每一竖列代表我们要用第几套字符来替换原文。一共26个字母,一共26套代替法,所以这个表是一个26*26的表。
维吉尼亚密码表
每一行就可以代表一套凯撒密码加密方法。
加密方法
加密公式:C = (P + K)%26
C:密文
P:原文
K:第几套加密方式
使用第几套加密方式是通过约定一个规则来确定的,这个规则就是“密钥”。
这样一个密钥字母代表一套加密方式,比如:t代表第19套加密方式,h代表第7套加密方式,i代表第8套加密方式,s代表第18套加密方式。
这样密钥和原文每个字符一一对应,如果密钥长度不足,那么循环替代。
原文 h e l l o w o r l d
密钥 t h i s t h i s t h i
密文 A L T D H E G K S L