예제 #1
0
 /**
  * 加密算法:将密码的char与秘钥的MD5的char相加,并转换为base64字符串。 (因为key的细微变化都会使MD5几乎完全不同,所以传输保密性更好,此处不必考虑存储保密性)
  * (可惜此方法不太适合前端,但一时又找不出更兼容的方法,查了一下好像前端加密更麻烦更复杂一些)
  *
  * @param pass 要加密的密码,不能有中文,长度应小于32位
  * @param key 秘钥(建议使用时间作为秘钥)
  * @return 加密后的密码,长度128位
  */
 public static String encodePass(String pass, String key) {
   if (pass.length() > 32) return "";
   String md5key = getMD5(key); // 加长秘钥
   String result = "";
   BigInteger big_pass = toNumber(pass);
   BigInteger big_key = toNumber(md5key);
   BigInteger big_result = big_pass.add(big_key); // 相加
   result = big_result.toString();
   result = Base64Coder.encodeString(result); // 编码
   return result;
 }
예제 #2
0
 /**
  * 解密算法:将base64字符串解析然后减去秘钥的MD5的char,得到密码的char并转换为密码。
  *
  * @param pass 已加密的密码
  * @param key 加密时用的秘钥
  * @return 解密后的密码
  */
 public static String decodePass(String pass, String key) {
   String md5key = getMD5(key); // 加长秘钥
   String result = "";
   String str_result = "";
   try {
     str_result = Base64Coder.decodeString(pass); // 解码
   } catch (Exception e) {
     return "";
   }
   BigInteger big_result = toBigInteger(str_result);
   BigInteger big_key = toNumber(md5key);
   BigInteger big_pass = big_result.subtract(big_key); // 作差
   result = toString(big_pass);
   return result;
 }