密钥解密
时间限制:1000 ms | 内存限制:65535 KB
难度:1
描述
密钥加密是将密钥数字串值循环加到明文(需要加密的文字串)上,使得明文变形而不可阅读,变形后的文字串称为密文。
例如,密钥为4972863,明文为“the result of 3 and 2 is not 8”,则循环加密的过程及结果为:
即密文为:
xql"zkvyu "wl#7)hpl&5$rz"vuw$A
这里的密钥加密是循环加密,并且在ASCII码值32(’ ’)到122(’z’)之间做模运算,超过了122的值便依次回跳到32,33,...等值。例如,’t’+7=116+7=123=122+1,其值超过122一个位置,因此回跳到值32。显然,密文也全部是由可见字符所组成。
输入
输入数据中含有若干组数据,每组数据由密钥和明文组成,密钥和明文均单独占一行。每组数据之间没有空行。
输出
对于每组数据,对应输出一行密文。
样例输入
4972863
the result of 3 and 2 is not 8
123
Hello World
样例输出
xql"zkvyu "wl#7)hpl&5$rz"vuw$A
Igomq#Xqumf
来源
package cn.edu.hpu;
import java.util.Scanner;
public class N711 {
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
while (cin.hasNext())
{
String a=cin.next();
cin.nextLine();
String b=cin.nextLine();
StringBuffer c=new StringBuffer();
for (int i=0;i<b.length();i++)
{
int temp=a.charAt(i%a.length())-'0';
char tch=(char) ((b.charAt(i)+temp-32)%91+32);
c.append(tch);
}
System.out.println(c);
}
}
}
好像是第一次用java写字符串问题,坑死我了,虽然一次ac但调试的很多次,我还以为编译器有问题,主要的问题是cin.nextLine();,char tch=(char)((b.charAt(i)+temp-32)%91+32);