课后作业:字符串加密
Posted messi2017
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了课后作业:字符串加密相关的知识,希望对你有一定的参考价值。
古罗马皇帝凯撒在打仗时曾经使用过以下方法加密军事情报:
很简单,就是每个字符原文往后面推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 }
验证截图:
以上是关于课后作业:字符串加密的主要内容,如果未能解决你的问题,请参考以下文章