2011-06-07 32 views
0

我製作了一個包p,包含一些整數和布爾值。數據包如下:在Java中使用AES算法進行加密

TCPPacket p=new TCPPacket(481,516,23,42,true,false,false,false,false,false,false,false,10,10); 

如何在Java中使用AES加密數據包?

回答

3

我建議您閱讀Oracle的教程Using AES with Java Technology

(先打上谷歌順便說一句。)

+0

好的問題是,加密我總是將數據包更改爲字符串或可能字節[] ...加密後,我不能反向字符串(或字節[])到數據包,在我創建它的形式。 .. 可能嗎? – user758084 2011-06-07 08:37:31

1

這是一些示例代碼,應該讓你開始。它使用AES(128)來加密和解密對象(使用SealedObject)。

public class App { 

    public static void main(String[] args) throws Exception { 
     TCPPacket packet = new TCPPacket(481, 516, 23, 42, true, false, false, false, false, false, false, false, 10, 10); 

     final char[] password = "secretpass".toCharArray(); 
     final byte[] salt = "a9v5n38s".getBytes(); 

     // Create key 
     SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); 
     KeySpec spec = new PBEKeySpec(password, salt, 1024, 128); 
     SecretKey tmp = factory.generateSecret(spec); 
     SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES"); 

     // Init ciphers 
     Cipher cipher = Cipher.getInstance("AES"); 
     Cipher dcipher = Cipher.getInstance("AES"); 
     cipher.init(Cipher.ENCRYPT_MODE, secret); 
     dcipher.init(Cipher.DECRYPT_MODE, secret); 

     // Encrypt packet 
     SealedObject so = new SealedObject(packet, cipher); 

     // Decrypt packet 
     TCPPacket decryptedPacket = (TCPPacket) so.getObject(dcipher); 

     System.out.println(decryptedPacket.first); 
    } 

    private static class TCPPacket implements Serializable { 
     private int first; 
     public TCPPacket(final int _first, final int i1, final int i2, final int i3, final boolean b, final boolean b1, 
         final boolean b2, final boolean b3, final boolean b4, final boolean b5, final boolean b6, 
         final boolean b7, final int i4, final int i5) { 

      first = _first; 
     } 
     public int getFirst() { 
      return first; 
     } 

    } 
} 
+0

非常感謝你,但我可以問一些問題。?爲什麼要打印decryptetPacket.first而不僅僅是解密的包?使用.first我只需要481(在我的數據包中的第一個整數,沒有它就像[email protected]那樣。所以也許我應該做些什麼來擺脫javaapplication7.Main $ TCPPacket @ ...或者那裏是......我沒有得到你的代碼? – user758084 2011-06-07 09:10:06

+0

這只是一個例子,表明數據包內的值實際上是解密的。 – 2011-06-07 09:13:31

相關問題