import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
/**
* 此数据加密方法在于0到9的数字将转换成什么样的中文
* 在通过import java.net.URLDecoder;import java.net.URLEncoder;加密
* 只能作数字的加密处理
*/
public class IntToCN {
/**
* 将从0到9的数字定义成一个中文字符
*/
public static String toCN(char number){
String strCN = "";
switch(number){
case '0':
strCN = "圣";
break;
case '1':
strCN = "达";
break;
case '2':
strCN = "菲";
break;
case '3':
strCN = "自";
break;
case '4':
strCN = "定";
break;
case '5':
strCN = "义";
break;
case '6':
strCN = "参";
break;
case '7':
strCN = "数";
break;
case '8':
strCN = "加";
break;
case '9':
strCN = "密";
break;
default:
break;
}
return strCN;
}
/**
* 反向将中文转换成0到9的数字
*/
public static String toNum(char number){
String strCN = "";
switch(number){
case '圣':
strCN = "0";
break;
case '达':
strCN = "1";
break;
case '菲':
strCN = "2";
break;
case '自':
strCN = "3";
break;
case '定':
strCN = "4";
break;
case '义':
strCN = "5";
break;
case '参':
strCN = "6";
break;
case '数':
strCN = "7";
break;
case '加':
strCN = "8";
break;
case '密':
strCN = "9";
break;
default:
break;
}
return strCN;
}
/**
* 数字加密,去掉"%",方便在web程序中使用
* @param id 需要加密的数字
* @return 加密后的字符串
*/
public static String encode(String id){
String strCN = "";
for(int i = 0;i < id.length();i++){
char num = id.charAt(i); // 取出每个数字
strCN += toCN(num); // 将数字转换成特定的中文
}
String strEncode = "";
try {
strEncode = URLEncoder.encode(strCN, "UTF-8"); // 加密
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
// 去掉加密后字符串的"%"
String [] strEncodeArr = strEncode.split("%");
String strEn = "";
for(int i = 0;i < strEncodeArr.length;i++){
strEn += strEncodeArr[i];
}
return strEn;
}
/**
* 数据解密
* @param id 需要解密的字符串
* @return 解密后的数字
*/
public static String decode(String strEncode){
String strDecode = "";
String strNum = "";
// 从第一个下标开始,每隔两个下表添加一个"%"
String strTemp = "";
for(int i = 0;i < strEncode.length();i++){
if(i == 0){
// 给第一个下表加"%",并重新构造字符串
strTemp += "%";
}else if(i%2 == 0){
// 每隔两个下表加"%"
strTemp += strEncode.substring(i-2,i).concat("%");
}
}
// 连接原字符串最后两位
strTemp += strEncode.substring(strEncode.length() - 2,strEncode.length());
try {
strDecode = URLDecoder.decode(strTemp, "UTF-8"); // 构建后的字符串解密
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
for(int i = 0;i < strDecode.length();i++){
char chCN = strDecode.charAt(i); // 取出字符
strNum += toNum(chCN); // 将字符转换成数字
}
return strNum;
}
public static void main(String[] args) {
String strEncode = encode("1023");
decode(strEncode);
}
}