/*
整数加密/解密算法
设置一套针对非负整数的加密,解密算法
例如: 一个简单的映射算法,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啥的。