如何在jce中使用生成和编码的密钥

时间:2009-12-18 09:40:32

标签: java encryption key

如果我生成这样的密钥:

SecretKey aesKey    = KeyGenerator.getInstance("AES").generateKey();

然后解码它:

System.out.println("used key: " + aesKlic.getEncoded());

现在我想用它来解密(退出程序后重新启动)。 显然,这样的事情不起作用:

SecretKey aesKey    = javax.crypto.spec.SecretKeySpec@[B@6c6e70c7;

如果末尾的字符串是解码密钥。

1 个答案:

答案 0 :(得分:1)

getEncoded()会返回byte[],其toString()的实现并非您所需要的。

您可能正在寻找密钥的十六进制或base64表示。

对于十六进制,您可以使用Hex.encodeHex(byte[])

对于base64 - Base64.encodeBase64String(byte[])

(均来自apache commons-codec

当您需要恢复字符串编码的密钥时(例如,当您再次启动程序时),您将不得不调用上述方法的解码等价物(它们在相同的类中)。