凯撒密码
设计思想:加密过程是对小写字母的ASCLL码进行+3的操作,解密则与之相反。(xyz的加密则为abc,abc的解密则为xyz)
流程图:
源代码
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);
}
}
}