用Java實現3DES


3DES,即三重DES,是DES的加強版,也是DES的一個更安全的變形。它使用3個56位(共168位)的密鑰對數據進行三次加密,和DES相比,安全性得到了較大的提高。

實際上,3DES是一個過渡的加密算法。1999年,NIST將3-DES指定為DES向AES過渡的加密標准。

3DES以DES為基本模塊,通過組合分組方法設計出分組加密算法。若三個密鑰互不相同,本質上就相當於用一個長為168位的密鑰進行加密,大大加強了數據的安全性。

若數據對安全性要求不高,可以讓其中的兩個密鑰相等,這樣,密鑰的有效長度也有112位。

在Java的加密體系中,使用3DES非常簡單,程序結構和使用DES時相同,只不過在初始化時將算法名稱由"DES"改為"DESede"即可。

下列程序基本原理和P12_01相同,只不過將加密和解密過程寫在一起。

import java.security.Security;

  import javax.crypto.Cipher; 

import javax.crypto.KeyGenerator; 

import javax.crypto.SecretKey;  

public class P12_02   {       

       public static void main(String[] args) throws Exception  {

              //KeyGenerator提供對稱密鑰生成器的功能,支持各種算法        

             KeyGenerator keygen;         

             //SecretKey負責保存對稱密鑰         

             SecretKey deskey;         

            //Cipher負責完成加密或解密工作      

            Cipher c;                

           Security.addProvider(new com.sun.crypto.provider.SunJCE());        

            //實例化支持3DES算法的密鑰生成器,算法名稱用DESede      

           keygen = KeyGenerator.getInstance("DESede");         

           //生成密鑰         

          deskey = keygen.generateKey();        

            //生成Cipher對象,指定其支持3DES算法      

           c = Cipher.getInstance("DESede");                      

           String msg = "郭克華_安全編程技術";      

           System.out.println("明文是:" + msg);               

           //根據密鑰,對Cipher對象進行初始化,ENCRYPT_MODE表示加密模式   

           c.init(Cipher.ENCRYPT_MODE, deskey);         

           byte[] src = msg.getBytes();         

          //加密,結果保存進enc

          byte[] enc = c.doFinal(src);

          System.out.println("密文是:" + new String(enc));

          //根據密鑰,對Cipher對象進行初始化,ENCRYPT_MODE表示加密模式

          c.init(Cipher.DECRYPT_MODE, deskey);

          //解密,結果保存進dec

          byte[] dec = c.doFinal(enc);

          System.out.println("解密后的結果是:"+ new String(dec));

         }

  } 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM