将字节数组转换为密钥

Hor*_*rax 27 java byte secret-key

我一直在尝试将字节数组转换为原始的SecretKey,但我没有更多的想法了.最有希望的尝试就是这个:

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

在这里找到:将密钥转换为字符串和反之亦然

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

尽管如此,我总是得到"方法SecretKeySpec未定义... [类名]" - 我只是没有得到.

我猜它只是一些小错误,但我无法弄明白.有人可以帮帮我吗?

ast*_*eri 48

您需要使用new关键字来调用构造函数并创建对象.

SecretKey originalKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
Run Code Online (Sandbox Code Playgroud)

当您尝试不使用它时new,编译器认为它可能是您在该类中定义的方法,因此您的错误消息.

  • 您能说说为什么选择使用 4 参数构造函数而不是“public SecretKeySpec(byte[] key, String algorithm)”吗?[链接](https://docs.oracle.com/javase/7/docs/api/javax/crypto/spec/SecretKeySpec.html#SecretKeySpec(byte[],%20java.lang.String))。谢谢! (2认同)