2013-02-27 75 views
0

的數據都會被加密:5140000000080401AEBFFFFFFFF7FBFE關於3DES的ECB加密算法

關鍵是:00000000000000000000000000000000

而最終的結果:DBBE8A87A4E37D95B5EDDD2BE6A4151F

//SecretKey to save data 
    private SecretKey desKey; 

    //Complete encryption and decryption work 
    private Cipher c; 

    //Save encryption results 
    private byte[] cipherResultByte; 

    private final static String Algorithm = "DESede/ECB/NoPadding";//Encryption method/operation mode 

    private static DESedeKeySpec dks; 

    private static SecretKeyFactory keyFactory; 

    public DESeseTest02() { 

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

     try { 

      dks = new DESedeKeySpec("00000000000000000000000000000000".getBytes()); 

      keyFactory = SecretKeyFactory.getInstance("DESede"); 


      //Generate key 
      desKey=keyFactory.generateSecret(dks); 


      //Generate Cipher object, specify its support DES algorithm 
      c=Cipher.getInstance(Algorithm); 

     } catch (NoSuchAlgorithmException e) { 
      e.printStackTrace(); 
     } catch (NoSuchPaddingException e) { 
      e.printStackTrace(); 
     } catch (InvalidKeyException e) { 
      e.printStackTrace(); 
     } catch (InvalidKeySpecException e) { 
      e.printStackTrace(); 
     } 
    } 


    public byte[] createEncryptor(byte[] b){ 

     try { 

//   System.out.println(str); 
      //根據密鑰,對Cipher進行初使化,DECRYPT_MODE加密模式 
      c.init(Cipher.ENCRYPT_MODE, desKey); 

//   byte[] input=str.getBytes(); 
//   System.out.println(input.length); 

      //Encryption, the results will be preserved 
      cipherResultByte=c.doFinal(b); 

     } catch (InvalidKeyException e) { 
      e.printStackTrace(); 
     } catch (IllegalBlockSizeException e) { 
      e.printStackTrace(); 
     } catch (BadPaddingException e) { 
      e.printStackTrace(); 
     } 
     return cipherResultByte; 
    } 

,但並不如預期的結果,爲什麼?任何人的幫助將非常感謝。

回答

2

替換

"00000000000000000000000000000000".getBytes() 

new byte[34] 

「0」 .getBytes()是不一樣的新的字節[] {0}