2012-02-18 191 views

回答

2

kgen不是關鍵,實際關鍵是你的SecretKeySpec對象。您可以使用原始字節創建鍵......看到下面的例子...

KeyGenerator kgen = KeyGenerator.getInstance("AES"); 
      kgen.init(128); 
      byte raw[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}; 
      SecretKeySpec spec = new SecretKeySpec(raw, "AES"); 
      //SecretKey key = kgen.generateKey(); 
      //byte keybytes[] = key.getEncoded(); 
      //SecretKeySpec spec = new SecretKeySpec(keybytes, "AES"); 
+1

注意,您可以直接使用'SecretKeySpec'作爲重點(它如果你有一個以隨機字節爲關鍵字的算法,則實現'SecretKey'接口。這對於AES和DES ABC密鑰(用於DESede)至少是正確的,在後者中奇偶校驗位被忽略。如果將密鑰存儲爲字段,我仍然會使用[SecretKeyFactory](http://docs.oracle.com/javase/6/docs/api/javax/crypto/SecretKeyFactory.html)創建一個「fail fast 「場景。 – 2012-02-18 14:19:26

+0

Ohk ...重要信息thnks .. :) – 2012-02-18 14:32:27

4

通過使用SecretKeySpec

SecretKey key = new SecretKeySpec(bytes, "AES");