继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

凯撒加密法 给大家分享一下 有大神路过的话顺便给指点下

1367936928
关注TA
已关注
手记 4
粉丝 2
获赞 43

主入口
Test.java

package Kaisa;

/**
 * 凯撒加密
 */

import java.util.Scanner;

/**
 * Created by WTFX on 2016/12/17.
 */
public class Test {
    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        do {
            System.out.println("1.加密\n2.解密\n输入其他任意数退出");
            int op = sc.nextInt();
            if (op == 1) {
                System.out.println("请输入你需要加密的明文:");
                String key = sc.next();
                Encrypt E = new Encrypt(key);
                System.out.println(E.toString());
            } else if (op == 2) {
                System.out.println("请输入你要解密的密文:");
                String value=sc.next();
                Decode D=new Decode(value);
                System.out.println(D.toString());
            } else {
                break;
            }
        }while (true);
    }
}

加密
Encrypt.java

package Kaisa;

import java.util.HashMap;
import java.util.Map;

import java.util.Map;

/**
 * Created by WTFX on 2016/12/17.
 * 加密
 */
public class Encrypt {
    private String key;
    private String value="";
    Map<String,String> map=new HashMap();

    public Encrypt() {}

    @Override
    public String toString() {
        String str_key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        String str_value="DEFGHIJKLMNOPQRSTUVWXYZABCdefghijklmnopqrstuvwxyzabc";
        for(int i=0;i<str_key.length();i++){
            map.put(String.valueOf(str_key.charAt(i)),String.valueOf(str_value.charAt(i)));
        }
        for(int i=0;i<this.key.length();i++){
            value+=map.get(String.valueOf(this.key.charAt(i)));
        }

        return "加密成功!\n密文:"+value;
    }

    public Encrypt(String key) {
        this.key = key;
    }
}

解密
Decode.java

package Kaisa;

import java.util.*;

/**
 * Created by WTFX on 2016/12/17.
 * 解密
 */
public class Decode {
    private String key="";
    private String value;
    Map<String,String> map=new HashMap();

    public Decode(String value) {
        this.value = value;
    }

    @Override
    public String toString() {
        String str_key="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
        String str_value="DEFGHIJKLMNOPQRSTUVWXYZABCdefghijklmnopqrstuvwxyzabc";
        for(int i=0;i<str_key.length();i++){
            map.put(String.valueOf(str_value.charAt(i)),String.valueOf(str_key.charAt(i)));
        }
        for(int i=0;i<value.length();i++){
            key+=map.get(String.valueOf(value.charAt(i)));
        }

        return "解密成功!\n明文:"+key;
    }
}
  • 本来想加密解密想用一个集合的 无奈功力不到位。
    有几点疑惑
    1.能不能通过一个集合实现
    2.能否通过转换byte 的方式 在ASCII上完成
    3.代码可以怎样精简
    有大神出没的话给个指点呗(^-^)V
打开App,阅读手记
5人推荐
发表评论
随时随地看视频慕课网APP

热门评论

添加集合应该写在静态初始化块里面会更好一些  不然每次调用就添加一次集合这样不太好

查看全部评论