古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。
程序设计思想:
首先输入一个字符串,然后利用函数将该字符串赋值给一个数组(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); } } }
程序截图: