如何在Java中为AES算法创建自己的密钥?

问题描述:

如何创建自己的加密在Java中使用AES算法的字符串,而不是使用如何在Java中为AES算法创建自己的密钥?

KeyGenerator kgen = KeyGenerator.getInstance("AES"); 

这将创建一个随机密钥的密钥?

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

通过使用SecretKeySpec

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