zoukankan      html  css  js  c++  java
  • 课后作业:字符串加密

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

    很简单,就是每个字符原文往后面推3个字符就是对应密码

    程序设计思想:编写一个类,在主线程中调用这个类的静态方法,这两个静态方法接受字符串,一个翻译原文,另一个翻译密码。具体实现非常简单,利用循环对字符串中每个字符作+3的操作(这里需要用到强制类型转换,对于字母表结尾的xyz和开头的abc分别在转为密码和转为原文中特殊处理,即a---x,b---y,c---z),同时把这些字符加到一个准备输出的空字符串的后面

    程序流程图:

    程序源代码:

     1 import java.util.Scanner;
     2 
     3 public class Test3 {
     4     public static void main(String[]args) {
     5          Scanner s = new Scanner(System.in);
     6          System.out.print("输入一串原始字符串:");
     7          String str = s.next();
     8          System.out.println("对应密码为:"+Psw.lock(str));
     9          System.out.print("输入一串密码字符串:");
    10          str = s.next();
    11          System.out.println("对应原文为:"+Psw.unlock(str));
    12          s.close();
    13     }
    14 }
    15 
    16 class Psw{
    17     private String original = "";
    18     private String psw = "";
    19     public Psw(String original) {
    20         this.original = original;
    21     }
    22     public void lock() {
    23         int len = original.length();
    24         for(int i = 0;i<len;++i) {
    25             if(original.charAt(i)>='a'&&original.charAt(i)<='w')
    26                 psw+=(char)(original.charAt(i)+3);
    27             else if(original.charAt(i)=='x')psw+='a';
    28             else if(original.charAt(i)=='y')psw+='b';
    29             else if(original.charAt(i)=='z')psw+='c';
    30             else if(original.charAt(i)>='A'&&original.charAt(i)<='W')psw+=(char)(original.charAt(i)+3);
    31             else if(original.charAt(i)=='X')psw+='A';
    32             else if(original.charAt(i)=='Y')psw+='B';
    33             else if(original.charAt(i)=='Z')psw+='C';
    34             else {
    35                 System.out.println("有异常字符,直接退出");
    36                 break;
    37             }
    38         }
    39     }
    40     public String getPsw() {
    41         return psw;
    42     }
    43     public static String lock(String str) {
    44         String str1 = "";
    45         int len = str.length();
    46         for(int i = 0;i<len;++i) {
    47             if(str.charAt(i)>='a'&&str.charAt(i)<='w')
    48                 str1+=(char)(str.charAt(i)+3);
    49             else if(str.charAt(i)=='x')str1+='a';
    50             else if(str.charAt(i)=='y')str1+='b';
    51             else if(str.charAt(i)=='z')str1+='c';
    52             else if(str.charAt(i)>='A'&&str.charAt(i)<='W')str1+=(char)(str.charAt(i)+3);
    53             else if(str.charAt(i)=='X')str1+='A';
    54             else if(str.charAt(i)=='Y')str1+='B';
    55             else if(str.charAt(i)=='Z')str1+='C';
    56             else {
    57                 System.out.println("有异常字符,直接退出");
    58                 break;
    59             }
    60         }
    61         return str1;
    62     }
    63     public static String unlock(String str) {
    64         String str1 = "";
    65         int len = str.length();
    66         for(int i = 0;i<len;++i) {
    67             if(str.charAt(i)>='d'&&str.charAt(i)<='z')
    68                 str1+=(char)(str.charAt(i)-3);
    69             else if(str.charAt(i)=='a')str1+='x';
    70             else if(str.charAt(i)=='b')str1+='y';
    71             else if(str.charAt(i)=='c')str1+='z';
    72             else if(str.charAt(i)>='D'&&str.charAt(i)<='Z')str1+=(char)(str.charAt(i)-3);
    73             else if(str.charAt(i)=='A')str1+='X';
    74             else if(str.charAt(i)=='B')str1+='Y';
    75             else if(str.charAt(i)=='C')str1+='Z';
    76             else {
    77                 System.out.println("有异常字符,直接退出");
    78                 break;
    79             }
    80         }
    81         return str1;
    82     }
    83 }

    验证截图:

  • 相关阅读:
    C#获取当前日期时间(转)
    c#截取字符串split各种用法
    c#国际化
    C#密码加密
    c#程序中对密码进行加密的方法
    百度信誉认证体系初级实名认证即将取消,这意味着什么?
    新增利息宝-京东淘宝唯品会自动抢单系统源码搭建过程
    webapp/H5封装,混开APP,没有原生APP好?事实是这样的吗?
    laravel基础laravle中orm简单的增删改查-一颗优雅草男神你姚哥
    Thinkphp二次开发威客RW平台源码详细搭建教程(技术分享帖)-一颗优雅草科技yungui
  • 原文地址:https://www.cnblogs.com/messi2017/p/7729839.html
Copyright © 2011-2022 走看看