【问题标题】:How to store and load keys using java.security.KeyStore class如何使用 java.security.KeyStore 类存储和加载密钥
【发布时间】:2010-06-12 02:47:33
【问题描述】:

创建密钥后,如何使用 Keystore 类的方法存储它们以及如何加载密钥?

【问题讨论】:

    标签: java security


    【解决方案1】:

    存储:

    KeyStore ks = KeyStore.getInstance("JKS");
    ks.setKeyEntry("keyAlias", key, passwordForKeyCharArray, certChain);
    OutputStream writeStream = new FileOutputStream(filePathToStore);
    ks.store(writeStream, keystorePasswordCharArray);
    writeStream.close();
    

    请注意,certChain 可能为空,除非您传递 PrivateKey

    加载中:

    KeyStore ks = KeyStore.getInstance("JKS");
    InputStream readStream = new FileInputStream(filePathToStore);
    ks.load(readStream, keystorePasswordCharArray);
    Key key = ks.getKey("keyAlias", passwordForKeyCharArray);
    readStream.close();
    

    阅读javadocs

    编辑:

    请注意,如果您要存储 SecretKey 或使用 SunJCE 提供程序(Java Cryptography Extension)的任何部分,则需要将 KeyStore 类型设置为 JCEKS。

    KeyStore ks = KeyStore.getInstance("JCEKS");
    

    【讨论】:

      【解决方案2】:

      我有一种情况,我不知道密钥别名,但我知道密钥库中只有一个密钥。我使用以下代码加载密钥(如上图加载密钥库后):

      Enumeration<String> aliases = keyStore.aliases();
      String alias = aliases.nextElement();
      KeyStore.PrivateKeyEntry keyEnt = (KeyStore.PrivateKeyEntry) keyStore.getEntry(alias,
                          new KeyStore.PasswordProtection(keystorePass.toCharArray()));
      PrivateKey privateKey = keyEnt.getPrivateKey();
      

      我添加了post on my blog,详细说明了如何加载私钥、公钥以及如何使用它们。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-03
        • 1970-01-01
        • 1970-01-01
        • 2021-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-21
        相关资源
        最近更新 更多