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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_19316267/article/details/80817616

对接支付渠道,通过绝对路径读取私钥正常,在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


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页