关于字符串加密与解密

古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:

 

 

 

请编写一个程序,使用上述算法加密或解密用户输入的英文字串要求设计思想、程序流程图、源代码、结果截图。

【设计思想】

先定义字符串,之后输入字符串,算出字符串的长度(str。Length),用for循环进行字符串的加密,运用ASCLL码表,进行加密,如果是xyz就减23,XYZ同理,其余的就正常加3,最后将加密的字符加到一个空的String类型的成员上。

解密只需要将加密的方法反过来用

【程序流程图】

package homework4;

import java.util.Scanner;
class Fuction{
public void jiami(){
	Scanner input=new Scanner(System.in);
	System.out.println("请输入要加密的字符串:");
	String str=input.nextLine();
	char[]chs=str.toCharArray();
	char temp=0;
    String str1="";
	for(int i=0;i<chs.length;i++)
	{
		if((str.charAt(i) > 64 && str.charAt(i) < 88)||(str.charAt(i) > 96 && str.charAt(i) < 120))
            temp=(char) (str.charAt(i) + 3);
        else if((str.charAt(i) > 87 && str.charAt(i) < 91)||(str.charAt(i) > 119 && str.charAt(i) < 123))
            temp=(char) (str.charAt(i) - 23);
        str1+=temp;
	}
	 System.out.println("加密后的字串是:\n"+str1);
	
}
public void jiemi(){
	Scanner input=new Scanner(System.in);
	System.out.println("请输入要解密的字符串:");
	String str=input.nextLine();
	char[]chs=str.toCharArray();
	char temp=0;
    String str1="";
	for(int i=0;i<chs.length;i++)
	{
		if((str.charAt(i) > 67 && str.charAt(i) < 91)||(str.charAt(i) > 99&& str.charAt(i) < 123))
            temp=(char) (str.charAt(i) - 3);
        else if((str.charAt(i) > 54 && str.charAt(i) < 68)||(str.charAt(i) > 96 && str.charAt(i) < 100))
            temp=(char) (str.charAt(i) + 23);
        str1+=temp;
	}
	System.out.println("解密后的字串是:\n"+str1);
}
 
}

public class Test {

	public static void main(String[] args) {
	
		// TODO 自动生成的方法存根
		Fuction m=new Fuction();
		System.out.println("选择你需要的功能:");
		System.out.println("1:加密字符串");
		System.out.println("2:解密字符串:");
		Scanner scanner=new Scanner(System.in);
		int c=scanner.nextInt();
		switch(c)
		{
		case 1:m.jiami();break;
		case 2:m.jiemi();break;
		
		}
	}	}

  

 

posted on 2017-10-26 20:39 呦呵呵丶 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/sin30/p/7739254.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值