维吉尼亚(Vigenere)密码

维吉尼亚密码是一个很著名的多码加密法,多码加密法是一种替换加密法,其中的每个明文字母可以用密文中的多个字母来代替,而每个密文字母也可以表示多个明文字母。

维吉尼亚密码引入了“密钥”的概念,即根据密钥来决定用哪一行的密表来进行替换,以此来对抗字频统计。

例1 维吉尼亚(Vigenere)密码加密:

设字母数字对应表为:

B C D E F G H I J K L M 0 1 2 3 4 5 6 7 8 9 10 11 12 N O P Q R S T U V W X Y Z 13 14 15 16 17 18 19 20 21 22 23 24 25

设n=6,密钥是cipher,这相应于密钥k=(2,8,15,7,4,17),明文是“this cryptosystem is not secure”(明文用小写字母表示), 试用(Vigenere)密码对其加密(密文用大写字母表示)。

解:首先将明文按每6个分为一组,然后与密钥进行模26加计算,得如下算式结果(两种列表形式,任选一种):

t h i s c r y p t o s y 19 7 8 18 2 17 24 15 19 14 18 24 2 8 15 7 4 17 2 8 15 7 4 17 21 15 23 25 6 8 0 23 8 21 22 15 V P X Z G I A X I V W P

就第一列t而言,(19+2)mod26=21→V

s t e m i s n o t s e c 18 19 4 12 8 18 13 14 19 18 4 2 2 8 15 7 4 17 2 8 15 7 4 17 20 1 19 19 12 9 15 22 8 25 8 19 U B T T M J P W I Z I T
u r e 20 17 4 2 8 15 22 25 19 W Z T

相应的密文是:VPXZGIAXIVWPUBTTMJPWIZITWZT

例2 维吉尼亚密码解密:

设n=5,密钥是ynfjw, 这相应于密钥k=(24,13,5,9,22), 已知密文是“GJNUH ZRARO GGNWC QUFWC FNNCK KBWAK UJNCD KLKAE CAI”(密文用大写字母表示),试用(Vigenere)密码对其解密(即求出明文,明文除英文习惯外用小写字母表示)。

解:首先将明文按每5个分为一组,然后与密钥进行模26减计算,得如下算式结果:

i w i l l b e v i s i t i n g 8 22 8 11 11 1 4 21 8 18 8 19 8 13 6 24 13 5 9 22 24 13 5 9 22 24 13 5 9 22 6 9 13 20 7 25 17 0 17 14 6 6 13 22 2 G J N U H Z R A R O G G N W C
s h a n g h a i t o m o r r o 18 7 0 13 6 7 0 8 19 14 12 14 17 17 14 24 13 5 9 22 24 13 5 9 22 24 13 5 9 22 16 20 5 22 2 5 13 13 2 10 10 1 22 0 10 Q U F W C F N N C K K B W A K
w w i t h m y f r i e n d 22 22 8 19 7 12 24 5 17 8 4 13 3 24 13 5 9 22 24 13 5 9 22 24 13 5 20 9 13 2 3 10 11 10 0 4 2 0 8 U J N C D K L K A E C A I

相应的明文是:iwillbevisitingshanghaitomorrowwithmyfriend

经验分享 程序员 微信小程序 职场和发展