JAVA之凯撒加密【解密】

1、凯撒加密(Caesar cipher)是一种简单的消息编码方式:它根据字母表将消息中的每个字母移动常量位k。举个例子如果k等于3,则在编码后的消息中,每个字母都会向前移动3位:a会被替换为d;b会被替换成e;依此类推。字母表末尾将回卷到字母表开头。于是,w会被替换为x,x会被替换为a。
 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;结果如下图


  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值