【问题标题】:How to read EC Private key in java which is in .pem file format如何在java中读取.pem文件格式的EC私钥
【发布时间】:2018-06-04 02:39:20
【问题描述】:

如何使用 JAVA 读取 .pem 文件中的 EC 私钥。在阅读时,我收到以下异常。

原因:java.security.InvalidKeyException: IOException : version mismatch: (supported: 00, parsed: 01

其实我的。 Pem 文件包含以下结构的私钥。

----开始EC私钥------ ====+====+=== ====+====+=== -----结束EC私钥-----

【问题讨论】:

标签: java security


【解决方案1】:

根据请求从 EC PRIVATE KEY (ex key.pem),我成功地将它导入 java.security.KeyStore

  1. 从 PEM 转换私钥 => PKCS#8 DER
    openssl pkcs8 -in key.pem -inform PEM -topk8 -nocrypt -out key-pkcs8.der -outform DER
  1. 加载它(jvm版本java-1.8.0-openjdk-1.8.0.201.b09-2.fc28.x86_64)
 void loadPrivateKey(KeyStore ks, X509Certificate cert){
    File privKeyFile = new File("key-pkcs8.der");
    // read private key DER file
    DataInputStream dis = new DataInputStream(new FileInputStream(privKeyFile));
    byte[] privKeyBytes = new byte[(int)privKeyFile.length()];
    dis.read(privKeyBytes);
    dis.close();

    KeyFactory kf = KeyFactory.getInstance("EC");
    // decode private key
    PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(privKeyBytes);
    PrivateKey privKey = kf.generatePrivate(privSpec);
    ks.setKeyEntry("key-alias", privKey, "password".toCharArray(), new Certificate[] {cert});
}

【讨论】:

  • 您能解释一下为什么我们必须执行第 1 步吗?比如 to 和 from 格式的标准名称是什么?
猜你喜欢
  • 2014-09-17
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
  • 2012-01-17
  • 2019-08-26
相关资源
最近更新 更多