<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 靈! 閱讀(362) 評論(0)  編輯  收藏 所屬分類: Java專題-加密解密


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


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    <2008年1月>
    303112345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    導航

    統計

    隨筆分類

    隨筆檔案

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 水蜜桃视频在线观看免费播放高清| 亚洲免费综合色在线视频| 国产精品永久免费视频| 又大又黄又粗又爽的免费视频| 亚洲美国产亚洲AV| 全部免费国产潢色一级| 黄网站色视频免费看无下截| 日产乱码一卡二卡三免费| 国产亚洲成在线播放va| 亚洲AⅤ优女AV综合久久久| 一区二区三区免费精品视频| 中文字幕亚洲一区| 国产一级在线免费观看| 99亚洲精品高清一二区| 免费精品国偷自产在线在线| 中国亚洲呦女专区| 国产乱色精品成人免费视频| 一级做a毛片免费视频| 久久亚洲国产伦理| 毛片免费在线观看网站| 黄人成a动漫片免费网站| 国产亚洲av人片在线观看| 69视频在线观看高清免费| 亚洲乱码国产乱码精华| 久久精品国产亚洲Aⅴ蜜臀色欲| 久久狠狠躁免费观看2020| 亚洲男人天堂2022| 亚洲精品国产电影| 午夜精品免费在线观看| 亚洲综合一区国产精品| 亚洲成人高清在线| 日韩在线永久免费播放| 亚洲AV无码国产精品永久一区| 亚洲中久无码不卡永久在线观看| 一级毛片免费播放| 香蕉视频亚洲一级| 亚洲精品高清视频| 国产在线不卡免费播放| 91青青国产在线观看免费| 国产精品久久亚洲一区二区| 亚洲高清美女一区二区三区|