如何将字节数组转换为键格式?

时间:2010-05-06 03:33:36

标签: java key bytearray aes

我想知道如何将字节数组转换为键。

我正在进行AES加密/解密。而不是生成一个键,我想使用我生成的字节数组。

byte[] clientCK = Milenage.f3(sharedSecret16, RANDbytes, opc);  

假设我有一个名为 clientCK 的字节数组,如上所述。我想在AES加密中使用它,如下所示。

Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, key);
byte[] encValue = c.doFinal(valueToEnc.getBytes());
String encryptedValue = new BASE64Encoder().encode(encValue);

因此,我需要将该字节数组 clientCK 转换为密钥格式。请帮忙。

2 个答案:

答案 0 :(得分:6)

您可能想要使用SecretKeySpec

  

public SecretKeySpec(byte[] key, String algorithm)

     

根据给定的字节数组构造一个密钥。

答案 1 :(得分:0)

U将在所需位置需要下面的策略jar名称,这些名称为某些算法提供更高的密钥大小/并为特定国家/地区设置更高的算法(根据美国出口加密策略)例如我的PC上的JDK目录。 C:\ Program Files \ Java \ jdk1.5.0_17 \ jre \ lib \ security

U还需要使用正确的加密提供程序设置java.security文件,如下面的java.security文件所示(在上面的目录中)

Example :     security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider
              security.provider.6=com.sun.crypto.provider.SunJCE
             security.provider.5=cryptix.provider.Cryptix 

如上所示的安全提供程序编号告诉各个JVM将使用基础安全提供程序的顺序。在上面的示例中,3个安全提供程序设置为在底层JVM中使用它们是BouncyCastle,SunJCE和Cryptix。

local_policy.jar和US_export_policy.jar文件放在JVM lib \ security目录中

您需要安装上面列出的Java密码学扩展(JCE)无限强度管辖权政策文件。如果不这样做,由于美国出口法律,密钥大小有限。(上述错误也可能是因为真的错误应用程序中给出的密钥大小,例如在应用程序中给出20字节而不是32字节的AES密钥大小。