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

    凯撒密码:

    1.程序设计思想:

    首先要获取加密内容和密钥;

    加密和解密中按照字符错n位的规则,构造加密和解密的函数;

    最后直接调用函数,并输出操作过后的结果。

    关键点是操作字符的移位。

    2.程序流程图:

    3.源程序:

    package 课后作业;

    import java.util.Scanner;

    public class CaesarCipher {

        public String path;//公有变量path为要操作的函数

        public String estr="";//公有变量estr为操作过后的字符串

        public char c;//公有变量c是要操作的path提取后的字符

    public static void main(String[] args) {

    // TODO Auto-generated method stub

       CaesarCipher c=new CaesarCipher();//建立新的对象

       System.out.println("*凯撒密码*");

       System.out.println("1.加密");//要执行的操作

       System.out.println("2.解密");

       System.out.println("你要进行的操作:");

       int num;

       Scanner scanner=new Scanner(System.in);//输入要执行的操作num

       num=scanner.nextInt();

           System.out.println("情输入你要进行操作的字符串");//输入操作的字符串

           c.path=scanner.next();

       if(num==1)

       {

       c.jiami(c.path, 3);//调用加密函数

       System.out.println("加密过后的字符串为:"+c.estr);

       }

       else

       {

       c.jiemi(c.path, 3);//调用解密函数

       System.out.println("解密过后的内容为:"+c.estr);

       }

    }

    public void jiami(String key,int n)//加密

    {

    for(int i=0;i<key.length();i++)

    {

    c=key.charAt(i);//取出字符串的每个字符

    if(c>='A'&&c<='Z')//当字符在"A""Z"之间的时候

    {

    if(c+n%26<='Z')//当提取的字符在Z之前的n位时

    {

       estr+=(char)(c+n%26);

    }

    else

    {

    estr+=(char)('A'+((n-('Z'-c)-1)%26));//孤立出来的n个字符

    }

    }

    else if(c>='a'&&c<='z')

    {

    if(c+n%26<='z')//当提取的字符在z之前的n位时

    {

       estr+=(char)(c+n%26);

    }

    else

    {

    estr+=(char)('a'+((n-('z'-c)-1)%26));//孤立出来的n个字符

    }

    }

    else if(c>='0'&&c<='9')

    {

    if(c+n%10<='9')

    {

       estr+=(char)(c+n%10);//当提取的字符在9之前的n位时

    }

    else

    {

    estr+=(char)('0'+((n-('9'-c)-1)%10));//孤立出来的n个字符

    }

    }

    else

    {

    estr+=c;

    }

    }

    }

    public void jiemi(String key,int n)//解密

    {

    for(int i=0;i<key.length();i++)

    {

    c=key.charAt(i);//取出字符串的每个字符

    if(c>='A'&&c<='Z')//当字符在"A""Z"之间的时候

    {

    if(c-n%26>='A')//当提取的字符在A之前的n个时

    {

       estr+=(char)(c-n%26);

    }

    else

    {

    estr+=(char)('Z'-((n-(c-'A')-1)%26));//操作孤立出来的n个字符

    }

    }

    else if(c>='a'&&c<='z')

    {

    if(c-n%26>='a')//当提取的字符在a之前的n个时

    {

       estr+=(char)(c-n%26);

    }

    else

    {

    estr+=(char)('z'-((n-(c-'a')-1)%26));//操作孤立出来的n个字符

    }

    }

    else if(c>='0'&&c<='9')

    {

    if(c-n%10>='0')//当提取的字符在0之前的n个时

    {

       estr+=(char)(c-n%10);

    }

    else

    {

    estr+=(char)('9'-((n-(c-'0')-1)%10));//操作孤立出来的n个字符

    }

    }

    else

    {

    estr+=c;

    }

    }

    }   

    }

    4.程序结果截图:

  • 相关阅读:
    ride.py 启动报错
    python中的__call__函数
    python-namedtuple命名元组
    python模块-操作excel(xlsxwriter)
    (转)python中@property详解
    python中使用logging将日志写入文件或输出到控制台
    “selenium.common.exceptions.SessionNotCreatedException: Message: Unable to find a matching set of capabilities“解决办法
    Fiddler对https抓包时,提示"HTTPS decryption is disabled."
    fiddler的使用
    常用软件激活/破解
  • 原文地址:https://www.cnblogs.com/lovema1210/p/7737290.html
Copyright © 2011-2022 走看看