gpt4 book ai didi

cryptography - 如何在 Java PKCS12 keystore 中存储对称 key

转载 作者:行者123 更新时间:2023-12-01 02:11:49 26 4
gpt4 key购买 nike

我需要一个适用于 .NET 和 Java 的对称 key 的安全存储。我需要能够以两种语言以编程方式而不是通过命令行工具从同一存储中存储和检索 HmacSha* key 。

我的第一次尝试是使用 PKCS12 keystore 从 Java 生成和存储 key ,这是一种可移植格式,我认为它支持存储 key 以及 X.509 证书的私钥。

但是,到目前为止,我的经验是它没有(注意:Java SE 6),在调用 java.security.KeyStore.setKeyEntry() 时抛出异常,提示我试图存储的 key 不是 PrivateKey .

我发现一篇文章声称这应该是可能的:http://www.pixelstech.net/article/1420427307-Different-types-of-keystore-in-Java----PKCS12

但是,如果我从那篇文章中提取示例代码(标题为“存储 key ”部分下的示例),我会在对 setKeyEntry() 的同一调用中得到相同的异常。

有谁知道我是否可以使用 Java 中的 PKCS12 keystore 满足这些要求?

FWIW,这是代码:

public void gen( String thePath, String thePassword ) throws Exception {
KeyGenerator keygen = KeyGenerator.getInstance("HmacSHA1");
Key key = keygen.generateKey();

KeyStore keystore = KeyStore.getInstance("PKCS12");
keystore.load(null, null);

// This call throws an exception
keystore.setKeyEntry("theKey", key, thePassword.toCharArray(), null);
keystore.store( new FileOutputStream(thePath), thePassword.toCharArray() );
}

编辑:嗯 - 在 .NET 方面调查这个发现也没有直接的编程支持使用 PKCS12 格式导入/导出对称 key 。似乎最受支持的方法是拥有一个用于加密对称 key 的 X.509 key 对,并将该对与加密的对称 key 一起存储/传输到 PKCS12 文件中的任何其他系统需要使用对称 key 。

任何遇到同样问题的人都找到了可行的解决方案?

最佳答案

KeyStore Java SE 的实现在以后的版本中获得了很多关注。对于 JCEKS key 存储,您的代码应该可以在 Java SE 8 上正常运行,但不能在 Java SE 7 上运行。

您可能需要等待 Java 9 以获得 PKCS#12 支持。 Java 9 将专注于支持 PKCS#12 key 存储。

关于cryptography - 如何在 Java PKCS12 keystore 中存储对称 key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28684530/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com