無線&移動互聯網技術研發

          換位思考·····
          posts - 19, comments - 53, trackbacks - 0, articles - 283
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          java BASE64加密(部分來自網絡)

          Posted on 2009-05-12 18:15 Gavin.lee 閱讀(1423) 評論(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]);  //連接檢查串解密
           }
          }

          主站蜘蛛池模板: 璧山县| 宁陕县| 兴和县| 泸州市| 洪雅县| 诏安县| 道真| 桃源县| 连南| 磴口县| 余江县| 沂源县| 贞丰县| 咸阳市| 和田市| 赤水市| 南阳市| 上犹县| 泰兴市| 红桥区| 越西县| 北碚区| 徐闻县| 海林市| 农安县| 毕节市| 枞阳县| 西乌| 阳春市| 长治市| 夹江县| 忻州市| 百色市| 明星| 阜南县| 浏阳市| 临夏市| 女性| 红桥区| 台湾省| 镇远县|