我最初有一个带有私钥的受密码保护的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文件?
发布于 2018-03-12 14:24:51
它最终变成了一个maven问题,它正在更改private.der文件的路径。使用绝对路径解决了这个问题。
https://stackoverflow.com/questions/45525002
复制相似问题