<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    備忘——DES加密解密類

           做項目時用到的DES加密解密類,代碼如下:

    import java.security.*;
    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESKeySpec;

    /**
     * Copyright 2007 GuangZhou Cotel Co. Ltd.
     * All right reserved.    
     * DES加密解密類.     
     * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
     * 
    @version 1.0 
     * Creation date: 2007-7-31 - 上午11:59:28
     
    */

    public class Des {
        
    /** 加密、解密key. */
        
    private static final String PASSWORD_CRYPT_KEY = "kEHrDooxWHCWtfeSxvDvgqZq";

        
    /** 加密算法,可用 DES,DESede,Blowfish. */
        
    private final static String ALGORITHM = "DES";

        
    public static void main(String[] args) throws Exception {
            String md5Password 
    = "202cb962ac59075b964b07152d234b70";
            String str 
    = Des.encrypt(md5Password);
            System.out.println(
    "str: " + str);
            str 
    = Des.decrypt(str);
            System.out.println(
    "str: " + str);
        }

        
        
    /**
         * 對數據進行DES加密.
         * 
    @param data 待進行DES加密的數據
         * 
    @return 返回經過DES加密后的數據
         * 
    @throws Exception
         * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
         * Creation date: 2007-7-31 - 下午12:06:24
         
    */

        
    public final static String decrypt(String data) throws Exception {
            
    return new String(decrypt(hex2byte(data.getBytes()),
                    PASSWORD_CRYPT_KEY.getBytes()));
        }


        
    /**
         * 對用DES加密過的數據進行解密.
         * 
    @param data DES加密數據
         * 
    @return 返回解密后的數據
         * 
    @throws Exception
         * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
         * Creation date: 2007-7-31 - 下午12:07:54
         
    */

        
    public final static String encrypt(String data) throws Exception  {
            
    return byte2hex(encrypt(data.getBytes(), PASSWORD_CRYPT_KEY
                    .getBytes()));
        }

        
        
    /**
         * 用指定的key對數據進行DES加密.
         * 
    @param data 待加密的數據
         * 
    @param key DES加密的key
         * 
    @return 返回DES加密后的數據
         * 
    @throws Exception
         * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
         * Creation date: 2007-7-31 - 下午12:09:03
         
    */

        
    private static byte[] encrypt(byte[] data, byte[] key) throws Exception {
            
    // DES算法要求有一個可信任的隨機數源
            SecureRandom sr = new SecureRandom();
            
    // 從原始密匙數據創建DESKeySpec對象
            DESKeySpec dks = new DESKeySpec(key);
            
    // 創建一個密匙工廠,然后用它把DESKeySpec轉換成
            
    // 一個SecretKey對象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
            SecretKey securekey 
    = keyFactory.generateSecret(dks);
            
    // Cipher對象實際完成加密操作
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            
    // 用密匙初始化Cipher對象
            cipher.init(Cipher.ENCRYPT_MODE, securekey, sr);
            
    // 現在,獲取數據并加密
            
    // 正式執行加密操作
            return cipher.doFinal(data);
        }


        
    /**
         * 用指定的key對數據進行DES解密.
         * 
    @param data 待解密的數據
         * 
    @param key DES解密的key
         * 
    @return 返回DES解密后的數據
         * 
    @throws Exception
         * 
    @author <a href="mailto:xiexingxing1121@126.com">AmigoXie</a>
         * Creation date: 2007-7-31 - 下午12:10:34
         
    */

        
    private static byte[] decrypt(byte[] data, byte[] key) throws Exception {
            
    // DES算法要求有一個可信任的隨機數源
            SecureRandom sr = new SecureRandom();
            
    // 從原始密匙數據創建一個DESKeySpec對象
            DESKeySpec dks = new DESKeySpec(key);
            
    // 創建一個密匙工廠,然后用它把DESKeySpec對象轉換成
            
    // 一個SecretKey對象
            SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);
            SecretKey securekey 
    = keyFactory.generateSecret(dks);
            
    // Cipher對象實際完成解密操作
            Cipher cipher = Cipher.getInstance(ALGORITHM);
            
    // 用密匙初始化Cipher對象
            cipher.init(Cipher.DECRYPT_MODE, securekey, sr);
            
    // 現在,獲取數據并解密
            
    // 正式執行解密操作
            return cipher.doFinal(data);
        }


        
    public static byte[] hex2byte(byte[] b) {
            
    if ((b.length % 2!= 0)
                
    throw new IllegalArgumentException("長度不是偶數");
            
    byte[] b2 = new byte[b.length / 2];
            
    for (int n = 0; n < b.length; n += 2{
                String item 
    = new String(b, n, 2);
                b2[n 
    / 2= (byte) Integer.parseInt(item, 16);
            }

            
    return b2;
        }


        
    public static String byte2hex(byte[] b) {
            String hs 
    = "";
            String stmp 
    = "";

            
    for (int n = 0; n < b.length; n++{
                stmp 
    = (java.lang.Integer.toHexString(b[n] & 0XFF));
                
    if (stmp.length() == 1)
                    hs 
    = hs + "0" + stmp;
                
    else
                    hs 
    = hs + stmp;
            }

            
    return hs.toUpperCase();
        }

    }

    posted on 2008-01-08 17:25 靈! 閱讀(376) 評論(0)  編輯  收藏 所屬分類: Java專題-加密解密


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    隨筆分類

    隨筆檔案

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲人成网国产最新在线| 亚洲AV无码一区二区三区性色| 亚洲黄色免费观看| 亚洲爆乳少妇无码激情| 最新国产乱人伦偷精品免费网站 | 国产小视频免费观看| 亚洲男人的天堂一区二区| 亚洲Av综合色区无码专区桃色| 亚洲精品一区二区三区四区乱码| 亚洲乱码中文字幕小综合| 香港经典a毛片免费观看看| 免费网站看av片| 吃奶摸下高潮60分钟免费视频| 亚洲欧洲免费视频| 免费人成网站在线观看不卡| 7x7x7x免费在线观看| 亚洲综合色自拍一区| 亚洲欧美综合精品成人导航| 日韩a级无码免费视频| 国产传媒在线观看视频免费观看| 亚洲日韩图片专区第1页| 中文字幕免费观看视频| 四虎影视在线永久免费看黄| 亚洲日韩乱码中文无码蜜桃| 免费久久人人爽人人爽av| 亚洲成av人片不卡无码久久| 亚洲熟妇AV一区二区三区浪潮| 18女人水真多免费高清毛片| 亚洲bt加勒比一区二区| 国产免费一区二区三区不卡| 永久亚洲成a人片777777| 乱爱性全过程免费视频| 中文字幕无码精品亚洲资源网| 久久久久久久久久免免费精品| 亚洲AⅤ视频一区二区三区| 成人黄软件网18免费下载成人黄18免费视频 | 国产精品亚洲专区无码WEB| 成人午夜性A级毛片免费| 免费国产va在线观看| 国产精品亚洲mnbav网站 | 国产精品亚洲精品日韩已满|