JAVA之凯撒加密【解密】
2017-01-23 11:24
369 查看
1、凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为x,x会被替换为a。
1>打开记事本,写如下一段代码:
2>打开记事本,写如下一段代码:
import java.util.HashMap;
import java.util.Map;
public class Decryption {
private static Map<Character, Character> map = new HashMap<Character, Character>();
static {
map.put('d', 'a');
map.put( 'e','b');
map.put('f', 'c');
map.put('g', 'd');
map.put('h', 'e');
map.put('i', 'f');
map.put('j', 'g');
map.put('k', 'h');
map.put('l', 'i');
map.put('m', 'j');
map.put('n', 'k');
map.put('o', 'l');
map.put('p', 'm');
map.put('q', 'n');
map.put('r', 'o');
map.put('s', 'p');
map.put('t', 'q');
map.put('w', 'r');
map.put('v', 's');
map.put('u', 't');
map.put('x', 'w');
map.put('y', 'v');
map.put('z', 'u');
map.put('a', 'x');
map.put('b', 'y');
map.put('c', 'z');
}
/**
* 解密
*/
public String decrypt(String s){
if(s == null || s.equals("")){
return s;
}
char c;
String result = "";
for(int i = 0;i < s.length();i++){
c = s.charAt(i);
if(map.containsKey(c)){
result += map.get(c);
}else{
result += c;
}
}
return result;
}
}保存为Decryption.java【同上节,我还是把他放在了D盘下InputTest文件夹内】
3>打开记事本,写如下一段代码:
打开dos运行窗口,输入d:转到D盘,接下来输入cd InputTest转到InputTest目录下:
输入Javac Switcher.java 回车 java Switcher。
我们加密:admin和解密:admin;结果如下图
1>打开记事本,写如下一段代码:
import java.util.HashMap; import java.util.Map; public class Encryption { private static Map<Character, Character> map = new HashMap<Character, Character>(); static { map.put('a', 'd'); map.put('b', 'e'); map.put('c', 'f'); map.put('d', 'g'); map.put('e', 'h'); map.put('f', 'i'); map.put('g', 'j'); map.put('h', 'k'); map.put('i', 'l'); map.put('j', 'm'); map.put('k', 'n'); map.put('l', 'o'); map.put('m', 'p'); map.put('n', 'q'); map.put('o', 'r'); map.put('p', 's'); map.put('q', 't'); map.put('r', 'w'); map.put('s', 'v'); map.put('t', 'u'); map.put('w', 'x'); map.put('v', 'y'); map.put('u', 'z'); map.put('x', 'a'); map.put('y', 'b'); map.put('z', 'c'); } /** * 加密 * */ public String encrypt(String s) { if (s == null || s.equals("")) { return s; } char c; String result = ""; for(int i = 0;i < s.length();i++){ c = s.charAt(i); if(map.containsKey(c)){ result += map.get(c); }else{ result += c; } } return result; } }保存为Encryption.java【同上节,我还是把他放在了D盘下InputTest文件夹内】
2>打开记事本,写如下一段代码:
import java.util.HashMap;
import java.util.Map;
public class Decryption {
private static Map<Character, Character> map = new HashMap<Character, Character>();
static {
map.put('d', 'a');
map.put( 'e','b');
map.put('f', 'c');
map.put('g', 'd');
map.put('h', 'e');
map.put('i', 'f');
map.put('j', 'g');
map.put('k', 'h');
map.put('l', 'i');
map.put('m', 'j');
map.put('n', 'k');
map.put('o', 'l');
map.put('p', 'm');
map.put('q', 'n');
map.put('r', 'o');
map.put('s', 'p');
map.put('t', 'q');
map.put('w', 'r');
map.put('v', 's');
map.put('u', 't');
map.put('x', 'w');
map.put('y', 'v');
map.put('z', 'u');
map.put('a', 'x');
map.put('b', 'y');
map.put('c', 'z');
}
/**
* 解密
*/
public String decrypt(String s){
if(s == null || s.equals("")){
return s;
}
char c;
String result = "";
for(int i = 0;i < s.length();i++){
c = s.charAt(i);
if(map.containsKey(c)){
result += map.get(c);
}else{
result += c;
}
}
return result;
}
}保存为Decryption.java【同上节,我还是把他放在了D盘下InputTest文件夹内】
3>打开记事本,写如下一段代码:
import java.util.Scanner; public class Switcher { public static void main(String[] args){ System.out.println("******************欢 迎 使 用凯撒加密器******************"); Scanner input = new Scanner(System.in); System.out.print("\n请选择操作(1.加密,2.解密): "); int operator = input.nextInt(); if(operator == 1){ System.out.print("请输入待加密的字符串:"); String source = input.next(); Encryption encryption = new Encryption(); String encrytStr = encryption.encrypt(source); System.out.println("加密后的字符串是:"); System.out.println(encrytStr); }else if(operator == 2){ System.out.print("请输入待解密的字符串:"); String source = input.next(); Decryption decryption = new Decryption(); String decryptStr = decryption.decrypt(source); System.out.println("解密后的字符串是:"); System.out.println(decryptStr); }else{ System.out.println("操作失误"); } } }保存为 Switcher.java【同上节,我还是把他放在了D盘下InputTest文件夹内】
打开dos运行窗口,输入d:转到D盘,接下来输入cd InputTest转到InputTest目录下:
输入Javac Switcher.java 回车 java Switcher。
我们加密:admin和解密:admin;结果如下图
相关文章推荐
- 加密解密。(aes, java)
- JAVA MD5ENCODE加密解密
- 分析java的加密与解密机制
- 用java常用加密,解密,数字签名等常用API
- 用java常用加密,解密,数字签名等常用API
- WDSsoft免费源代码,java加密解密编程常用工具包 JCT 1.0 (整理)
- JAVA实现的AZDG加密-解密算法(附源程序)(lp)
- java EJB 加密与解密原理的一个例子
- java EJB 加密与解密原理的一个例子
- RSA算法简单实现加密、解密、签名、验证(原创Java程序)
- Java使用AES加密和解密的实例详解
- java加密解密
- 一个用java写的加密解密程序
- java 加密解密
- Java - 简单加密-解密方法包装, 含encode(),decode(),md5()
- DESede加密解密程序(java)
- 一个用java写的加密解密程序
- 用java常用加密,解密,数字签名等常用API
- Java与.Net环境下RSA加密解密交互不成功的问题解决【续】
- Java中使用DES进行加密解密