3DES加密算法

3DES(或稱爲Triple DES)是三重數據加密算法(TDEA,Triple Data Encryption Algorithm)塊密碼的通稱。它相當於是對每個數據塊應用三次DES加密算法。由於計算機運算能力的增強,原版DES密碼的密鑰長度變得容易被暴力破解;3DES即是設計用來提供一種相對簡單的方法,即通過增加DES的密鑰長度來避免類似的攻擊,而不是設計一種全新的塊密碼算法。

基於Java的DES算法的使用

     //base64編碼
     public static String byte2base64(byte[] bytes){
    	 BASE64Encoder base64Encoder = new BASE64Encoder();
    	 return base64Encoder.encode(bytes);
     }
     //base64解碼
     public static byte[] base642byte(String base64) throws Exception{
    	 BASE64Decoder base64Decoder = new BASE64Decoder();
    	 return base64Decoder.decodeBuffer(base64);
     }
     
     public static String getKeyDes() throws Exception{
    	 //1.通過KeyGenerator獲取祕鑰生成器
    	 KeyGenerator kg = KeyGenerator.getInstance("DES");
    	 //2.設置DES算法的祕鑰爲56位
    	 kg.init(56);
    	 //3.生成DES算法的祕鑰
    	 SecretKey key = kg.generateKey();
    	 //4.爲了方便存儲,生成祕鑰後進行base64編碼
    	 String base64Str = byte2base64(key.getEncoded());
    	 return base64Str;
     }
     public static SecretKey  SecreKeyDes(String base64Key) throws Exception{
    	 //1.將相應的祕鑰字符串轉換成SecretKey對象
    	 byte[] bytes = base642byte(base64Key);
    	 //2.需要將祕鑰base64解碼後,傳入對應的算法後實例一個SecretKey即可
    	 SecretKey key = new SecretKeySpec(bytes, "DES");
    	 return key;
     }
     //加密
     public static byte[] encryptDES(byte[] source,SecretKey key)throws Exception{
    	 Cipher cipher = Cipher.getInstance("DES");
    	 cipher.init(Cipher.ENCRYPT_MODE,key);//加密模式
    	 byte[] bytes = cipher.doFinal(source);
    	 return bytes;
     }
     //解密
     public static byte[] decryptDES(byte[] source,SecretKey key)throws Exception{
    	 Cipher cipher = Cipher.getInstance("DES");
    	 cipher.init(Cipher.DECRYPT_MODE,key);//解密模式
    	 byte[] bytes = cipher.doFinal(source);
    	 return bytes;
     }
     


發佈了152 篇原創文章 · 獲贊 24 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章