gpt4 book ai didi

Java - 从 .DER 文件加载私钥

转载 作者:太空宇宙 更新时间:2023-11-04 11:15:16 24 4
gpt4 key购买 nike

我最初有一个受密码保护的 PEM 文件,其中包含使用 BouncyCaSTLe 读入 Java 应用程序的私钥。 PEM 文件开头为

-----开始 RSA 私钥-----

这让我相信它是 PKCS#1 格式。我不想使用 PEM 文件,而是生成一个二进制文件并将私钥读入 Java 程序。根据here ,我使用以下 openssl 代码生成 DER 文件:

openssl pkcs8 -topk8 -nocrypt -in private.pem -outform der -out private.der

然后使用以下 Java 代码尝试读取 DER 文件:

Path path = Paths.get(privateKeyLocation);
byte[] byteArray = Files.readAllBytes(path);

PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(byteArray);

PrivateKey privKey;
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
privKey = keyFactory.generatePrivate(keySpec);
} catch (InvalidKeySpecException e) {
logger.error("error with jwt", e);
return null;
} catch (NoSuchAlgorithmException e) {
logger.error("error with jwt", e);
return null;
}

但是我遇到了这个错误:

java.lang.NoClassDefFoundError: com/rsa/asn1/ASN_Exception
at com.rsa.jsafe.provider.JS_KeyFactory.b(Unknown Source)
at com.rsa.jsafe.provider.JS_KeyFactory.engineGeneratePrivate(Unknown Source)
at java.security.KeyFactory.generatePrivate(KeyFactory.java:372)
...

我不确定是什么原因导致此错误,并想知道是否有更好的方法使用 BouncyCaSTLe 读取 DER 文件?

最佳答案

这最终是一个 Maven 问题,更改了 private.der 文件的路径。使用绝对路径解决了这个问题。

关于Java - 从 .DER 文件加载私钥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45525002/

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