古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。
程序设计思想:
首先输入一个字符串,然后利用函数将该字符串赋值给一个数组(char类型),然后利用for循环,将数组中的每个字符的ASCLL码+3,当字符为x,y,z,时,单独写出
X->A;
Y->B;
Z->C;
然后再将最后的得到的数组变成字符串输出。
如果是破解密码,则将每个数组中的字符的ASCLL码都-3,对于a,b,c应该单独判断。
A->X;
B->Y;
c->Z;
然后再将其变成字符串输出。
程序设计流程图:
程序源代码:
import java.util.Scanner;
public class Password {
public char Change(char a)
{
char c=0;
if(a=='X')
c='A';
if(a=='Y')
c='B';
if(a=='Z')
c='Z';
if(a>='A'&&a<='W')
c=(char) (a+3);
return c;
}
public char jiemi(char a)
{
char c=0;
if(a=='A')
c='X';
if(a=='B')
c='Y';
if(a=='C')
c='Z';
if(a>='D'&&a<='Z')
c=(char) (a-3);
return c;
}
public static void main(String[] args)
{
String s1;
String s2="";
char c;
int w;
Scanner input=new Scanner(System.in);
Password p=new Password();
System.out.println("请选择1.加密2.解密");
w=input.nextInt();
if(w==1)
{
System.out.println("请输入一条消息:");
s1=input.next();
char a[]=s1.toCharArray();
for(int i=0;i<a.length;i++)
{
if(a[i]<'A'&&a[i]>'Z')
{
System.out.println("输入有误");
System.exit(0);
}
c=p.Change(a[i]);
s2=s2+c;
}
System.out.println("加密后的消息为:");
System.out.println(s2);
}
else
{
System.out.println("请输入要解密的句子");
s1=input.next();
char a[]=s1.toCharArray();
for(int i=0;i<a.length;i++)
{
if(a[i]<'A'&&a[i]>'Z')
{
System.out.println("输入有误");
System.exit(0);
}
c=p.jiemi(a[i]);
s2=s2+c;
}
System.out.println("解密后的消息为:");
System.out.println(s2);
}
}
}
程序截图: