如何在Java PKCS12密钥库中存储对称密钥

胡巴乔布

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

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

不过,到目前为止,我的经验是,它没有这样做(注意:Java SE 6),对java.security.KeyStore.setKeyEntry()的调用引发了异常,抱怨我要存储的密钥不是PrivateKey 。

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

但是,如果我从该文章中提取示例代码(名为“存储密钥”部分下的示例),则在对setKeyEntry()的相同调用上会遇到相同的异常。

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

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格式导入/导出对称密钥也没有直接的程序支持。似乎最好的支持方法是拥有一个X.509密钥对,该密钥对用于加密对称密钥,并将该对与加密的对称密钥一起存储/传输到PKCS12文件中,传输至任何其他系统。需要使用对称密钥。

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

马尔滕·博德威斯

KeyStoreJava SE实现在以后的版本中引起了很多关注。您的代码在JSEKS密钥存储的Java SE 8上应该可以正常运行,但在Java SE 7上则不能正常运行。

您可能需要等待Java 9才能获得PKCS#12支持。Java 9将重点关注对PKCS#12密钥存储的支持。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SSLContext和PKCS12密钥库-在JVM上有效,但在Android上无效

来自分类Dev

良好做法:如何在android / java中处理密钥库密码?

来自分类Dev

如何在Java中将pkcs8转换为pkcs12

来自分类Dev

如何使用“ SecItemAdd”在OS X中存储对称密钥?

来自分类Dev

如何管理每个git存储库中的唯一密钥?

来自分类Dev

如何在Android Studio中创建密钥存储文件?

来自分类Dev

iOS:如何通过程序中的私钥和x509证书创建PKCS12(P12)密钥库?

来自分类Dev

如何在LDAP中使用userPKCS12存储密钥库?

来自分类Dev

java bouncycastle PKCS12密钥库“最大密码长度”

来自分类Dev

如何在安全(C ++)中存储加密密钥?

来自分类Dev

如何在Java密钥库中存储Bouncy Castle PGP密钥?

来自分类Dev

如何在Java源代码中存储秘密密钥,但不可读

来自分类Dev

在PHP中如何在没有硬编码密钥的情况下进行对称加密

来自分类Dev

如何在Java中通过密码输入Windows-MY密钥库?

来自分类Dev

SSLContext和PKCS12密钥库-在JVM上可用,但在Android上不可用

来自分类Dev

openssl pkcs12不断从密钥库的条目中删除PEM密码吗?

来自分类Dev

Winserver2008证书颁发机构的PKCS12密钥

来自分类Dev

如何在Windows中存储RSA密钥对?

来自分类Dev

如何在Java中以非对称加密生成密钥对?

来自分类Dev

如何在Websphere Liberty和Java中使用密钥库?

来自分类Dev

将对称密钥存储在Java卡中

来自分类Dev

在PHP中如何在没有硬编码密钥的情况下进行对称加密

来自分类Dev

如何在Android Keystore中存储对称密钥

来自分类Dev

如何在github页面的公共存储库中安全地存储谷歌地图api密钥?

来自分类Dev

如何使用存储在密钥库中的自定义密钥执行 AES 加密?

来自分类Dev

由于指数大小有限,如何在 C# 中创建非对称密钥?

来自分类Dev

如何安全地存储对称密钥?我可以使用 pkcs12 来存储对称密钥吗?

来自分类Dev

生成对称密钥并存储在android密钥库中

来自分类Dev

创建 PKCS12 文件以用作 java 信任存储

Related 相关文章

  1. 1

    SSLContext和PKCS12密钥库-在JVM上有效,但在Android上无效

  2. 2

    良好做法:如何在android / java中处理密钥库密码?

  3. 3

    如何在Java中将pkcs8转换为pkcs12

  4. 4

    如何使用“ SecItemAdd”在OS X中存储对称密钥?

  5. 5

    如何管理每个git存储库中的唯一密钥?

  6. 6

    如何在Android Studio中创建密钥存储文件?

  7. 7

    iOS:如何通过程序中的私钥和x509证书创建PKCS12(P12)密钥库?

  8. 8

    如何在LDAP中使用userPKCS12存储密钥库?

  9. 9

    java bouncycastle PKCS12密钥库“最大密码长度”

  10. 10

    如何在安全(C ++)中存储加密密钥?

  11. 11

    如何在Java密钥库中存储Bouncy Castle PGP密钥?

  12. 12

    如何在Java源代码中存储秘密密钥,但不可读

  13. 13

    在PHP中如何在没有硬编码密钥的情况下进行对称加密

  14. 14

    如何在Java中通过密码输入Windows-MY密钥库?

  15. 15

    SSLContext和PKCS12密钥库-在JVM上可用,但在Android上不可用

  16. 16

    openssl pkcs12不断从密钥库的条目中删除PEM密码吗?

  17. 17

    Winserver2008证书颁发机构的PKCS12密钥

  18. 18

    如何在Windows中存储RSA密钥对?

  19. 19

    如何在Java中以非对称加密生成密钥对?

  20. 20

    如何在Websphere Liberty和Java中使用密钥库?

  21. 21

    将对称密钥存储在Java卡中

  22. 22

    在PHP中如何在没有硬编码密钥的情况下进行对称加密

  23. 23

    如何在Android Keystore中存储对称密钥

  24. 24

    如何在github页面的公共存储库中安全地存储谷歌地图api密钥?

  25. 25

    如何使用存储在密钥库中的自定义密钥执行 AES 加密?

  26. 26

    由于指数大小有限,如何在 C# 中创建非对称密钥?

  27. 27

    如何安全地存储对称密钥?我可以使用 pkcs12 来存储对称密钥吗?

  28. 28

    生成对称密钥并存储在android密钥库中

  29. 29

    创建 PKCS12 文件以用作 java 信任存储

热门标签

归档