java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big.

对接支付渠道,通过绝对路径读取私钥正常,在maven项目的resource目录下,通过classpath路径的方式读取错误?

- 通过两种方法验证得出的输出结果都是true

--很大可能是因为私钥和公钥对接不上。 

--A私钥 A1 公钥  B第三方私钥 ,B1第三方公钥

 A1给第三方,B1从第三方拿到

A加密后,第三方拿到A1解密

B加密后返回数据,我方接受用B1解密  交叉校验

priKeyStream = new FileInputStream("/Users/xxx/workspace_pay/pay-tunnel/pay-tunnel-service/src/main/resources/cert/baofoo/bfkey_100025773@@200001173.pfx");
byte[] reads1 = new byte[priKeyStream.available()];
priKeyStream.read(reads1);
String a = new String(reads1);
System.out.println("a=" + a + " len:" + reads1.length);


priKeyStream  = BaofooBizUtil.getSignCertByPath("cert/baofoo/bfkey_100025773@@200001173.pfx");
byte[] reads = new byte[priKeyStream.available()];
priKeyStream.read(reads);


String b = new String(reads);
System.out.println("b=" + a + " len:" + reads.length);
System.out.println("a eq b : " + a.equals(b) + " len:"+ (reads.length() == .length()));

-控制台没有答应错误,翻看代码原来在三方工具类中包异常信息都吞掉了,打印异常看到

java.io.IOException: DerInputStream.getLength(): lengthTag=111, too big.

百度了找到了解决方案,maven对它支持的几种类型外在编译的时候会对其他文件改写里面的内容


在pom文件中<plugins></plugins>中加入以下配置就OK

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration><encoding>UTF-8</encoding>
        <!-- 过滤后缀为pem、pfx的证书文件 -->
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>cer</nonFilteredFileExtension>
            <nonFilteredFileExtension>pem</nonFilteredFileExtension>
            <nonFilteredFileExtension>pfx</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
    </configuration>
</plugin>

感谢作者的分享,讲的很详细:

https://blog.csdn.net/wolf_love666/article/details/51448596


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值