Java编写数字加密解密

/*
整数加密/解密算法

设置一套针对非负整数的加密,解密算法

例如: 一个简单的映射算法,0->a,1->b, 2->c, 3->d, 4->e,5->f, 6->g, 7->h, 8->i,9->j
encode(2756)->”chfg”
decode(“bcea”)->1240

加分项:实现示例之外的其他加密/解密算法

//number>=0
public String encode(int number);

public int decode(String numberStr);

*/

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

/**

  • Created by mahuichao on 16/8/18.
    */
    public class Test {
    public static final int number = 2756;
    public static final String str = "bcea";

    public static void main(String[] args) {

    String enStr = encode(number);
    System.out.println("加密的结果为:" + enStr);
    int deNum = decode(str);
    System.out.println("解密后的结果为:" + deNum);
    

    }

    public static String encode(int number) {
    Map map = encode_rules();

    String strNum = String.valueOf(number);
    String result = "";
    char[] chNum = strNum.toCharArray();
    for (int i = 0; i < chNum.length; i++) {
        result += map.get(Integer.parseInt(chNum[i] + ""));
    }
    return result;
    

    }

    public static int decode(String number) {
    Map map = decode_rules();
    String result = "";
    char[] chNum = number.toCharArray();
    for (int i = 0; i < chNum.length; i++) {
    result += map.get(chNum[i] + "");
    }
    int finalResult = Integer.parseInt(result);
    return finalResult;
    }

    public static Map encode_rules() {
    Map map = new HashMap();
    map.put(0, "a");
    map.put(1, "b");
    map.put(2, "c");
    map.put(3, "d");
    map.put(4, "e");
    map.put(5, "f");
    map.put(6, "g");
    map.put(7, "h");
    map.put(8, "i");
    map.put(9, "j");

    return map;
    

    }

    public static Map decode_rules() {
    Map map = new HashMap();
    map.put("a", "0");
    map.put("b", "1");
    map.put("c", "2");
    map.put("d", "3");
    map.put("e", "4");
    map.put("f", "5");
    map.put("g", "6");
    map.put("h", "7");
    map.put("i", "8");
    map.put("j", "9");

    return map;
    

    }

}

你这就是数字和小写字母的ascii码差值了,附代码:

    private int span = 49;  // 差值

public String encode(long num) {
    char[] chars = String.valueOf(num).toCharArray();
    for(int i = 0; i< chars.length; i++) {
        chars[i] += 49;
    }
    return String.valueOf(chars);
}

public long decode(String cipher) {
    char[] chars = cipher.toCharArray();
    for(int i = 0; i< chars.length; i++) {
        chars[i] -= 49;
    }
    return Long.parseLong(String.valueOf(chars));
}

这个太简单,破解基本不费力;为何不选择现成的对称加密算法,比如DES啥的。