古罗马凯撒皇帝加密军事情报之字符串加密解密

题目介绍:

设计思想 :

(1)加密:首先先定义字符串,之后用户输入字符串,运用length函数算出字符串的长度,运用for循环逐步取字符,运用ASCLL码表,进行加密,如果是xyz就减23,XYZ同理,其余的就正常加3,最后将加密的字符加到一个空的String类型的成员上,最后输出结果即为加密后的字符串;

(2)解密:同上,首先定义字符串,用户输入,运用length函数算出字符串的长度,运用for循环逐步取字符,运用ASCLL码表,进行加密,如果是abc就加23,ABC同理,其余的就正常减3,最后将解密的字符加到一个空的String类型的成员上,最后输出结果即为解密后的字符串;

程序源码:

//古罗马加密
import java.util.*;
public class Four{
public static void main( String args[] )
{
String str1,str2;
Scanner reader=new Scanner(System.in);
System.out.println("输入待加密英文密码:");
str1=reader.next();//输入
char[] arrey=new char[100];
str1.getChars(0,str1.length(),arrey,0);//加字符串赋值到数组里面,进行数组字符的判断
System.out.println("加密后是:");
for(int i=0;i<str1.length();i++)
{
if((str1.charAt(i)>=65&&str1.charAt(i)<=87)||(str1.charAt(i)>=97&&str1.charAt(i)<=119))//属于a-w和A-W直接+3
arrey[i]=(char)(arrey[i]+3);
else
arrey[i]=(char)(arrey[i]-23);//xyz和XYZ
System.out.print(arrey[i]);
}

//区分解密和加密 不要单纯的加减 两者并不是反过来的 注意abc和xyz
System.out.println(" 输入待加密英文密码:");
str2=reader.next();
char[] arr=new char[100];
str2.getChars(0,str2.length(),arr,0);//同上
System.out.println("解密后是:");
for(int i=0;i<str2.length();i++)
{//注意下面的运算 abc三个是由xyz三者-23得来的 所以abc应+23返回到xyz 其余的数都是+3得来直接减去即可
if((str2.charAt(i)>=68&&str2.charAt(i)<=90)||(str2.charAt(i)>=100&&str2.charAt(i)<=122))
arr[i]=(char)(arr[i]-3);
else
arr[i]=(char)(arr[i]+23);
System.out.print(arr[i]);//输出
}
reader.close();
}

}

运行结果截图:

程序流程图:

加密:

解密:

原文地址:https://www.cnblogs.com/mm20/p/7726563.html