无线&移动互联网技术研发

换位思考·····
posts - 19, comments - 53, trackbacks - 0, articles - 283
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

java BASE64加密(部分来自网络)

Posted on 2009-05-12 18:15 Gavin.lee 阅读(1419) 评论(0)  编辑  收藏 所属分类: java SE & EE

“主要就是BASE64Encoder、BASE64Decoder两个类,我们只需要知道使用对应的方法即可。另,BASE加密后产生的字节位数是8的倍数,如果不够位数以=符号填充。”

package com.Gavin.tools.util.jiami;

import java.io.IOException;

import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;

/**
 * @descripte 该类包含了简单的BASE64加/解密方法;
 *      【约定密码:当前时间的秒数:用户名】的加/解密
 *      也对通信双方串进行连接检查
 * @author Gavin.lee
 * @date 09-5-12 pm
 *
 *
 */
public class LinkEncrypt {
 /**
  * 双方协定的连接密码
  */
 private static final String SECRET = "yuedingPWD";

 /**
  * 将加密参数进行解密,并返回 
  * @param loginName   加密的参数
  *     
  */
 public String[] unPar(String loginName){
  if (loginName == null || loginName.trim().equals(""))
   return null;
  try {
   String str = unEncrypt(loginName);
   if (str == null || str.trim().equals("")) {
    return null;
   }    
   return str.split(":");
  } catch (Exception e) {
   System.out.println("LinkEncrypt unPar method IOExcepiton");
  }
  return null;
 }

 /**
  *
  * 生成加密后的传递参数字符串
  * @param secret
  *            双方协定的连接密码
  * @param userName
  *            用户名
  * @return 返回 [双方协定的连接密码]+[:]+[系统时间]+[:]+[用户名]
  */
 public String createPar(String secret, String userName){
  if (secret == null || secret.trim().equals(""))
   return "";
  if (userName == null || userName.trim().equals(""))
   return "";
  String time = String.valueOf(System.currentTimeMillis() / 1000);
  // time 是时间戳,就是自从 1970.1.1 00:00:00 到现在的秒数
  StringBuffer sb = new StringBuffer();
  sb.append(secret).append(":");
  sb.append(time).append(":");
  sb.append(userName);
  String loginName = encrypt(sb.toString());
  return loginName;
 }

 /**
  * 对字符串进行BASE64加密
  */
 private String encrypt(String str) {
  if (str == null || str.equals("")) {
   return "";
  }
  BASE64Encoder encoder = new BASE64Encoder();
  return encoder.encode(str.getBytes());
 }

 /**
  * 对BASE64加密后的字符串进行解密
  */
 private String unEncrypt(String str){
  if (str == null || str.equals("")) {
   return "";
  }
  BASE64Decoder decoder = new BASE64Decoder();
  try {
   byte[] b = decoder.decodeBuffer(str);
   return new String(b);
  } catch (IOException e) {
   e.printStackTrace();
  }
  return "";
  
 }
 
 public static void main(String[] args) {
  LinkEncrypt le = new LinkEncrypt();
  
  String str = "waitJIAMI";
  
  System.out.println(le.encrypt(str));  //简单的串加密
  
  System.out.println(le.unEncrypt(le.encrypt(str))); //简单的解密
  
  System.out.println(le.createPar(SECRET, "Gavin.lee"));  //连接检查串加密
  
  System.out.println(le.unPar(le.createPar(SECRET, "Gavin.lee"))[0]);  //连接检查串解密
 }
}


只有注册用户登录后才能发表评论。


网站导航: