WAC502.Vigenère 密码

传统题 时间 2000 ms 内存 256 MiB 5 尝试 1 已通过 1 标签

Vigenère 密码

1616 世纪法国外交家 Blaise de Vigenère 设计了一种多表密码加密算法——Vigenère 密码。

Vigenère 密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。

在密码学中,我们称需要加密的信息为明文,用 MM 表示;称加密后的信息为密文,用 CC 表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为 kk

在 Vigenère 密码中,密钥 kk 是一个字母串,k=k_1k_2k_nk = k\_1k\_2…k\_n

当明文 M=m_1m_2m_nM = m\_1m\_2…m\_n 时,得到的密文 C=c_1c_2c_nC=c\_1c\_2…c\_n,其中 c_i=m_i®k_ic\_i = m\_i®k\_i,运算 ®® 的规则如下表所示:

30.png

Vigenère 加密在操作时需要注意:

1. ®® 运算忽略参与运算的字母的大小写,并保持字母在明文 MM 中的大小写形式;

2. 当明文 MM 的长度大于密钥 kk 的长度时,将密钥 kk 重复使用。

例如,明文 M=HelloworldM=Helloworld,密钥 k=abck=abc 时,密文 C=HfnlpyosndC=Hfnlpyosnd

QQ截图20190314031438.png

输入格式

输入共 22 行。

第一行为一个字符串,表示密钥 kk,长度不超过 100100,其中仅包含大小写字母。

第二行为一个字符串,表示经加密后的密文,长度不超过 10001000,其中仅包含大小写字母。

输出格式

输出共 11 行,一个字符串,表示输入密钥和密文所对应的明文。

Samples

CompleteVictory
Yvqgpxaimmklongnzfwpvxmniytm
Wherethereisawillthereisaway

在线编程 IDE

建议全屏模式获得最佳体验