【发布时间】:2020-07-19 18:20:01
【问题描述】:
我有一个 PEM 文件,它是一个 RSA 私钥,我正在使用下面的代码读取私钥和公钥::
StringReader reader = new StringReader(//pem);
PEMReader pemReader = new PEMReader(reader);
final KeyPair keyPair = (KeyPair) pemReader.readObject();
pKey = keyPair.getPublic();
RSAPublicKey rsaPublicKey = (RSAPublicKey) pKey;
rsaPublicKey.getEncoded();
Base64.getEncoder().encodeToString(rsaPublicKey.getEncoded()))
此代码在作为独立 Java 运行时运行良好
但是,当作为 Webapplication 运行时,我收到以下错误::
SEVERE: Servlet.service() for servlet MYSERVER threw exception
java.lang.NoClassDefFoundError: org/bouncycastle/asn1/x509/SubjectPublicKeyInfo
at org.bouncycastle.jce.provider.JCERSAPublicKey.getEncoded(Unknown Source)
库 :: bcprov-jdk16-143
有什么线索吗??
【问题讨论】:
-
您是否检查了文件或密钥存储的权限.. 因为网络应用程序可能在不同的帐户下运行。
-
我将 pem 值加载为字符串对象。我成功获得了 KeyPair,但在提取 Base64 编码之后......它失败了......
-
请检查您的类路径中是否存在重复的 BC jar。例如网络服务器可能有自己的 bcprov jar,或者可能在您的 JRE 的 lib/ext 文件夹中安装了一个。
标签: java security rsa bouncycastle java-security