zoukankan      html  css  js  c++  java
  • 凯撒密码

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

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

    程序设计思想:

    首先输入一个字符串,然后利用函数将该字符串赋值给一个数组(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);
    		}
    	}
    
    }
    

     程序截图: 

     

  • 相关阅读:
    Cypress安装使用(E2E测试框架)
    AirtestIDE详解(跨平台的UI自动化编辑器)
    Linux之自动化部署
    工作笔记 之 Python应用技术
    工作笔记 之 Linux服务搭建
    工作笔记 之 互联网实用技术
    Git全面应用
    Python-Thread(通俗易懂)
    php笔记(二)PHP类和对象之Static静态关键字
    php笔记(一)面向对象编程
  • 原文地址:https://www.cnblogs.com/ljysy/p/7737670.html
Copyright © 2011-2022 走看看