凯撒密文问题

问题的前景:

设计思想:

这个问题主要分为两大块:其一,加密问题:加密就是要将自己想要保护的文件内容进行变化使其不易泄露,在这个问题里的文件内容变化就是要将输入的字符的对应的ASCII进行加三,然后再将它转换为字符串输出即可,在代码的方法体中就要将输入的字符串转化为数组(to.CharArray());然后再将存储字符串的数组进行强制转换转换为整形的数组,最后将整形的数组进行加三的操作,最后再转化为字符数组即可。其二,就是解密问题,解密就是将输入的字符串转换为字符数组,然后字符数组转化为整形的数组,将整形的数组进行减三的操作就行,然后再转化为字符数组进行输出即可。

程序流程图:

源代码:

//凯瑟密码    信1605-3 赵春辉 20163464
import java.util.Scanner;
public class Caserkey
{
	int list2[]=new int[10];//定义一个长度为10的整形的数组。
	int list4[]=new int[10];//
	int  setkey(String qwe)//创建一个含参的setkey方法
	{
		char list1[]=qwe.toCharArray();//将输入的字符串转化在数组中
		for(int i=0;i<list1.length;i++)
			 list2[i]=list1[i];//将char类型的数组转化为int型的数组
		for(int i=0;i<list1.length;i++)
		    list1[i]=(char) (list2[i]+3);//将int型的数组进行加密(+3操作);
		System.out.println(list1);//将加密以后的密文输出出来
		return 1;
	}
	int  getkey(String asd)//创建的有返回值的getkey方法
	{
		char list3[]=asd.toCharArray();//将输入的密文转化为数组存储
		for(int i=0;i<list3.length;i++)
			list4[i]=list3[i];//将char类型的数组转化为int型的数组
		for(int i=0;i<list3.length;i++)
			list3[i]=(char)(list4[i]-3);//将int型数组的密文进行解密操作(-3)
		
		System.out.println(list3);//将加密以后的密文输出出来
		return 1;
	}
	public static void main(String args[])
	{
		Caserkey caser=new Caserkey();
		Scanner scanner=new Scanner(System.in);
		System.out.println("please chose 1(setkey) or chose 0(getkey):");
		int chose=scanner.nextInt();
		if(chose==1)
		{
			System.out.println("enter your setkey");
			String string1=scanner.next();
			caser.setkey(string1);
		}
		else
			if(chose==0)
			{
				System.out.println("pease enter your miwen:");
				String string2=scanner.next();
				caser.getkey(string2);
			}
			else
				System.out.println("sorry,you input error!");
	}

}

  

结果截图:

 

原文地址:https://www.cnblogs.com/zhaochunhui/p/7730003.html