url纯数字参数的加密

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);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值