将字节数组转换为密钥

Posted

技术标签:

【中文标题】将字节数组转换为密钥【英文标题】:convert Byte Array to Secret Key 【发布时间】:2012-12-21 16:23:57 【问题描述】:

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

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

在这里找到:Converting Secret Key into a String and Vice Versa

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

尽管如此,我总是得到“方法 SecretKeySpec 未定义 ... [类名]” - 我只是不明白。

我猜这只是一个小错误,但我就是想不通。有人可以帮我吗?

【问题讨论】:

构造函数末尾有分号吗? :) 【参考方案1】:

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

SecretKey originalKey = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");

当您尝试在没有new 的情况下调用它时,编译器认为它可能是您在该类中定义的方法,因此会出现错误消息。

【讨论】:

我知道,仍然 - 很高兴知道不孤单 ;-) 再次感谢! 您能说说为什么选择使用 4 参数构造函数而不是 public SecretKeySpec(byte[] key, String algorithm) 吗? link。谢谢!

以上是关于将字节数组转换为密钥的主要内容,如果未能解决你的问题,请参考以下文章

[C++11]_[初级]_[十六进制字符串转换为字节数组]

Java将字节数组转换为十六进制字节数组[重复]

将字节数组转换为字符串并返回字节数组的问题

将字符串数组转换为字节数组

将 ctype 字节数组转换为字节

将 3 维字节数组转换为单字节数组 [关闭]