维吉尼亚密码
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
在16世纪的欧洲,随着宗教改革与跨国贸易的兴起,外交官与商人急需一种能够替代脆弱的单表替换密码的通信手段。1523年,被誉为“密码学之父”的莱昂·巴蒂斯塔·阿尔伯蒂提出了多表替换的构想,但真正将其体系化并推广开来的是16世纪的法国外交官布莱斯·德·维吉尼亚(Blaise de Vigenère)。
维吉尼亚密码(Vigenère Cipher)的核心在于一字一密的近似实现。通过使用一个关键词,它使得明文中同一个字母在密文中可以被加密成不同的形式,彻底打破了简单替换密码中字母频率的统计规律,在长达三个世纪的时间里被称为“不可破译的密码”。
加密原理如下:
- 使用一张 26×26 的“维吉尼亚密码表”(如下表所示),其中行代表明文字母,列代表密钥字母。
- 对明文中的每个字母,以其自身为行号,对应密钥字母为列号,在表中交叉处找到密文字母。
- 密钥长度不足时,循环重复使用密钥字母。
维吉尼亚密码表:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
A A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
B B C D E F G H I J K L M N O P Q R S T U V W X Y Z A
C C D E F G H I J K L M N O P Q R S T U V W X Y Z A B
D D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
E E F G H I J K L M N O P Q R S T U V W X Y Z A B C D
F F G H I J K L M N O P Q R S T U V W X Y Z A B C D E
G G H I J K L M N O P Q R S T U V W X Y Z A B C D E F
H H I J K L M N O P Q R S T U V W X Y Z A B C D E F G
I I J K L M N O P Q R S T U V W X Y Z A B C D E F G H
J J K L M N O P Q R S T U V W X Y Z A B C D E F G H I
K K L M N O P Q R S T U V W X Y Z A B C D E F G H I J
L L M N O P Q R S T U V W X Y Z A B C D E F G H I J K
M M N O P Q R S T U V W X Y Z A B C D E F G H I J K L
N N O P Q R S T U V W X Y Z A B C D E F G H I J K L M
O O P Q R S T U V W X Y Z A B C D E F G H I J K L M N
P P Q R S T U V W X Y Z A B C D E F G H I J K L M N O
Q Q R S T U V W X Y Z A B C D E F G H I J K L M N O P
R R S T U V W X Y Z A B C D E F G H I J K L M N O P Q
S S T U V W X Y Z A B C D E F G H I J K L M N O P Q R
T T U V W X Y Z A B C D E F G H I J K L M N O P Q R S
U U V W X Y Z A B C D E F G H I J K L M N O P Q R S T
V V W X Y Z A B C D E F G H I J K L M N O P Q R S T U
W W X Y Z A B C D E F G H I J K L M N O P Q R S T U V
X X Y Z A B C D E F G H I J K L M N O P Q R S T U V W
Y Y Z A B C D E F G H I J K L M N O P Q R S T U V W X
Z Z A B C D E F G H I J K L M N O P Q R S T U V W X Y
加密规则:
- 密码本定位:给定一个明文字符 和一个密钥字符 ,在密码表中找到第 行()和第 列()的交叉点,该位置的字符即为密文字符。
- 密钥循环:当密钥长度小于明文有效字符数时,按顺序循环使用密钥字符。
- 示例:若密钥为
ABC,明文为HELLO(有效字符5个),则加密对应关系为:- H(第1个)→ 使用密钥 A
- E(第2个)→ 使用密钥 B
- L(第3个)→ 使用密钥 C
- L(第4个)→ 循环回密钥 A
- O(第5个)→ 使用密钥 B
- 示例:若密钥为
- 空格处理:明文中的空格不参与加密,直接保留在原位置。
输入格式
输入为单组测试数据。
- 第 1 行:一个字符串 ,表示待加密的明文(包含大写字母和空格,)。
- 第 2 行:一个字符串 ,表示加密密钥(仅包含大写字母,)。
输出格式
输出一行对应的密文字符串。
输入输出样例
DATA SECURITY
BEST
EELT TIUNSMLR
说明/提示
数据范围说明:
- 明文长度
- 密钥长度
- 密码本为标准维吉尼亚密码表