维吉尼亚密码(Vigenère Cipher)是最古老且最常用的加密算法之一。它非常古老——类似的加密方法最早由 Giovan Battista Bellaso 于 1553 年描述,并于 1586 年由 Blaise de Vigenère 进行了改进。
维吉尼亚加密为明文的每个字母产生一个密文字母,将一个明文字母与对应位置上的一个密钥字母相结合。如果密钥比明文短,则根据需要简单地重复使用。例如,对于长度为 3 的密钥和长度为 7 的明文,字母将按如下方式结合($K_i$ 是密钥字母,$P_i$ 是明文字母,$C_i$ 是得到的密文字母):
| $K_1$ | $K_2$ | $K_3$ | $K_1$ | $K_2$ | $K_3$ | $K_1$ |
|---|---|---|---|---|---|---|
| $P_1$ | $P_2$ | $P_3$ | $P_4$ | $P_5$ | $P_6$ | $P_7$ |
| $C_1$ | $C_2$ | $C_3$ | $C_4$ | $C_5$ | $C_6$ | $C_7$ |
密钥的字母指定了明文字母在字母表中应该“向前移动”多少个位置。如果密钥字母是 A,则对应的明文字母将移动一个字符;B 意味着移动两个位置,依此类推。字母表被认为是循环的,因此如果最后一个字母(Z)需要移动,它会再次变成 A。请注意,A(密钥)与另一个 A(明文)结合将得到 B,这对于普通的维吉尼亚密码来说可能有点不同寻常。本题面末尾的维吉尼亚方格给出了明文字母如何与密钥字母结合以产生密文的概览。
你的任务是编写一个程序,使用给定的密钥通过维吉尼亚密码对消息进行加密。
输入格式
输入包含多个实例。每个实例由两行组成,第一行是加密密钥,第二行是明文。密钥和明文都由英文大写字母 $\{A, B, C, \dots, Z\}$ 组成。密钥的长度在 $1$ 到 $1000$ 之间,明文的长度在 $1$ 到 $100\,000$ 之间(均包含端点)。
输入以包含单个零(0)的一行结束。
输出格式
对于每个输入实例,输出密文——即加密后的消息版本。
样例
输入样例 1
ICPC THISISSECRETMESSAGE ACM CENTRALEUROPEPROGRAMMINGCONTEST LONGKEY CERC 0
输出样例 1
CKYVRVIHLUUWVHIVJJU DHAUUNMHHSRCFSEPJEBPZJQTDRAUHFU OTFJ
说明
维吉尼亚方格(Vigenère square): 将给定的明文字母(列)和密钥字母(行)映射到所得的密文字母。
| 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 | 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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