RSA 加载公钥时:[color=red]Caused by: java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=127, too big.[/color]
加载公钥代码段:
解决办法:[color=red]加载错误-->去掉文件中的首尾行BEGIN,END[/color]
加载方法改为:
加载公钥代码段:
public static String getPubKeyByCer(String cerPath)
{
String pubKey = "";
try {
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");
FileInputStream in = new FileInputStream(cerPath);
Certificate certificate = certificateFactory.generateCertificate(in);
in.close();
PublicKey publicKey = certificate.getPublicKey();
pubKey = Base64Utils.encode(publicKey.getEncoded());
} catch (CertificateException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return pubKey;
}
解决办法:[color=red]加载错误-->去掉文件中的首尾行BEGIN,END[/color]
加载方法改为:
public static String loadPublicKeyByFile(String path) throws Exception {
try {
BufferedReader br = new BufferedReader(new FileReader(path));
String readLine = null;
StringBuilder sb = new StringBuilder();
while ((readLine = br.readLine()) != null) {
sb.append(readLine);
}
br.close();
return sb.toString();
} catch (IOException e) {
throw new Exception("公钥数据流读取错误");
} catch (NullPointerException e) {
throw new Exception("公钥输入流为空");
}
}
本文介绍了一种在使用Java进行RSA公钥加载时遇到的异常情况:InvalidKeyException,并给出了具体的解决办法。通过去除公钥文件中的BEGIN和END标记行,修改了公钥加载方法,成功解决了问题。
5572

被折叠的 条评论
为什么被折叠?



