将字节数组转换为秘钥

40

我一直在尝试将一个字节数组转换回它原来的SecretKey,但我已经没有更多的想法了。最有希望的尝试是这样的:

byte[] encodedKey     = Base64.decode(stringKey);
SecretKey originalKey = SecretKeySpec(encodedKey, 0, encodedKey.length, "AES")

在这里找到:将秘密密钥转换为字符串及其反向过程

我正在使用import javax.crypto.spec.SecretKeySpec,因此应正确使用SecretKeySpec的构造函数,至少参考http://docs.oracle.com/javase/1.5.0/docs/api/javax/crypto/spec/SecretKeySpec.html

尽管如此,我总是会遇到“The Method SecretKeySpec is undefined for ... [Class Name]” 的问题 - 这让我很困惑。

我猜这只是一些小错误,但我就是搞不清楚。有人能帮助我吗?


1
你的构造函数末尾有分号吗? :) - asteri
1个回答

65
您需要使用new关键字调用构造函数并创建对象。
SecretKey originalKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
当您试图在没有使用new的情况下调用它时,编译器会认为它可能是您在该类中定义的一个方法,因此会出现错误提示。

我知道,但是知道自己不孤单也是好事;-) 再次感谢! - Horstus Horax
1
你能否解释一下为什么你选择使用4个参数的构造函数而不是public SecretKeySpec(byte[] key, String algorithm)链接。谢谢! - Kevin Meredith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接