`

JAVA RSA-DerInputStream.getLength(): lengthTag=127, too big.

阅读更多

RSA 加载公钥时:Caused by: java.security.InvalidKeyException: IOException: DerInputStream.getLength(): lengthTag=127, too big.
加载公钥代码段:
 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;
  }


解决办法:加载错误-->去掉文件中的首尾行BEGIN,END
加载方法改为:
  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("公钥输入流为空");  
      }  
  } 

1
3
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics