【问题标题】:programatically reading java keystore file jceks using openssl使用 openssl 以编程方式读取 java 密钥库文件 jceks
【发布时间】:2014-09-16 11:15:03
【问题描述】:

我正在尝试在 java 中进行 AES 加密/解密

我使用 KeyGenerator 生成了密钥。我使用 java keystore 存储了密钥。

        Key myKey = KeyGenerator.getInstance("AES").generateKey();

        KeyStore.ProtectionParameter protParam =
                new KeyStore.PasswordProtection("secretpass".toCharArray());

        //For writing the secret Key
        KeyStore.SecretKeyEntry skEntry =
                new KeyStore.SecretKeyEntry((SecretKey)myKey);
        FileOutputStream fout = new FileOutputStream("test.ks");

        KeyStore ksout = KeyStore.getInstance("JCEKS");
        ksout.load(null,"changeit".toCharArray());
        ksout.setEntry("secretalias", skEntry, protParam);

我想以编程方式使用 openssl 从该文件中获取此密钥。是否可以?如果是这样,请给我一些关于如何进行的建议。

提前谢谢你。

【问题讨论】:

    标签: java encryption openssl aes keystore


    【解决方案1】:

    这是不可能的,因为默认密钥库 (jks) 是 Java 使用的专有格式。

    要交换密钥,您需要像 PKCS#11 之类的可移植的东西(至少在 Java 8 中是受支持的 KeyStore 格式)。

    【讨论】:

    • 感谢您的快速回复。有没有其他方法可以做到这一点......我的意思是,任何其他标准方法来实现java组件和c++组件(使用openssl)之间的密钥交换。
    • @Gridahr 他刚刚告诉你答案。 PKCS#11。
    • 它在哪里说 PKCS#11 是 Java 8 中支持的密钥库?不是here
    • @GregS Look here.
    • @UwePlonus:这些是保留名称,仅此而已。这并不意味着 Oracle 有它的提供者实现。他们没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 2012-01-19
    • 2021-05-29
    • 2013-05-16
    • 2014-01-27
    • 2016-09-28
    • 2018-11-18
    相关资源
    最近更新 更多