密钥库 - 从命令行自定义SecretKey进入密钥库

时间:2014-09-30 06:41:33

标签: java encryption openssl aes keytool

作为加密和保存数据的一部分,我们使用带有openssl的AES算法生成了KEY。

openssl enc -aes-256-cbc -P -nosalt

Openssl已生成KEY& IV值,存储在纯文本文件中。因为,在普通文档中存储密钥是一种不安全的标准,所以考虑将其移动到Keystore。

因此,我们通过执行以下命令使用keytool生成了一个Keystore。

keytool -genseckey -keyalg AES -alias aesstore -keysize 256 -keypass changeit -storetype jceks -keystore hello.jceks -storepass changeit

此Keystore包含随机保密密钥。所以,我们想要移动我们的KEY& IV值到Keystore,以便我们可以从那里获取并使用它们来加密数据。我在下面找到了用于存储自定义KEY值到Keystore的链接,但没有找到IV值。

http://java.dzone.com/articles/secret-key-import-java

因此,如果任何人对如何存储KEY& IV值到密钥库。,请分享。

此外,我们正在寻找一种方法,我们可以从命令行本身将自定义键传递给密钥库。

提前致谢。

1 个答案:

答案 0 :(得分:1)

每次在操作模式下使用密钥时,IV都应该是唯一的。因此,用钥匙存储IV确实没有多大意义。如果必须,您可以使用散列函数从密钥中提取CBC的IV,但是您应该只使用密钥加密一次并生成IV。

通常会生成随机IV并将其作为密文的前缀。当使用密码时,它们通常与随机盐配对。如果为每个加密操作生成新的随机盐,则指定完全随机的IV将是假的。在那种情况下,IV可以源自盐。在这种情况下,盐通常会以密文为前缀。

因此,您正在寻找存储持久IV的选项,而IV已被定义为针对每个加密进行更改。这就是您在密钥库实现中找不到解决方案的原因。