hzCPPOJ

移位加密算法

时间限制:  1 s      内存限制:   128 MB
提交:34     正确:5     分值:99

题目描述

凯撒密码是一种非常古老的加密方法,相传当年凯撒大帝行军打仗时为了保证自己的命令不被敌军知道,就使用这种特殊的方法进行通信,以确保信息传递的安全。它的原理是字母与字母之间的替换。例如26个字母都向后移动K位。若K等于2,则AC代替,BD代替,以此类推。该算法比较简单,很容易实现,但是作为加密算法,特别容易被破解。

为了让加密后的密文更难被破解,大将苏定方想出一个更妙的方法:不再将每个字母移动常位数,而是利用一个密钥值序列将每个字母移动不同的位数。如果消息原文的长度大于密钥值序列的长度,则可以对密钥值序列循环使用。要求只对输入信息原文中的字母进行加密,非字母不需要加密。

如密钥值序列为3 2 5 1,信息原文为 @AbcDfax@,那么利用密钥值序列对A移动3位为Db移动2位为dc移动5位为hD移动1位为Ef移动3位为ia移动2位为cx移动5位为c

则加密后的密文为:DdhEicc

输入

1行输入信息原文,以@号开始和结束。要求只对输入信息原文中的字母进行加密,加密后还是字母,原文中非字母不需要加密,保留原字符就可以。

2行输入密钥值序列,密钥值间用空格分割,以*号开始和结束,并用空格分隔不同的字符。

输出

输出加密后的密文。输出的密文不用保留开始和结束的@符号。

样例

样例输入:
@ab#C z@ * 1 2 *
样例输出:
bd#D b
样例输入:
@DbEz@ * 1 2 *
样例输出:
EdFb
样例输入:
@Db( E )z@ * 1 2 3 *
样例输出:
Ed( H )a

提交人

spiritatu

来源/分类