bcprov-jdk15on.jar遇到的问题记录

近期,项目中需要接新的数据源,涉及加签验签,加解密
问题一:项目中引入的1.59版本,但打印出来却是1.50版本

<dependency>
    <groupId>org.bouncycastle</groupId>
    <artifactId>bcprov-jdk15on</artifactId>
    <version>1.59</version>
</dependency>

static {
        // 防止内存中出现多次BouncyCastleProvider的实例
        if (null == Security.getProvider(BouncyCastleProvider.PROVIDER_NAME)) {
            Security.addProvider(new BouncyCastleProvider());
            System.out.println("nothaveBouncyCastleProvider实例版本:"+Security.getProvider(BouncyCastleProvider.PROVIDER_NAME).getVersion());
        }else{
            //执行到此处并打印1.50版本
            System.out.println("有BouncyCastleProvider的实例版本:"+Security.getProvider(BouncyCastleProvider.PROVIDER_NAME).getVersion());
        }
    }
原因: java项目用的jboss服务器启动的,jboss安装目录modules下面有1.50的jar,项目启动过程中会先加载modules中的jar,因此每次打印的版本号都是1.50

解决办法:
static {
        // 防止内存中出现多次BouncyCastleProvider的实例
        if (null == Security.getProvider(BouncyCastleProvider.PROVIDER_NAME)) {
            Security.addProvider(new BouncyCastleProvider());
            System.out.println("nothaveBouncyCastleProvider实例版本:"+Security.getProvider(BouncyCastleProvider.PROVIDER_NAME).getVersion());
        }else{
            System.out.println("有BouncyCastleProvider的实例版本:"+Security.getProvider(BouncyCastleProvider.PROVIDER_NAME).getVersion());
//先删除再重新加入即可!!!!!!!!!
            Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
            BouncyCastleProvider bcp = new BouncyCastleProvider();
            System.out.println("新增BC,版本为:"+bcp.getVersion());
            Security.addProvider(bcp);
        }
    }
问题二:java.lang.SecurityException: JCE cannot authenticate the provider BC
因为本地采用jboss+jdk启动,百度说是jdk有安全验证,jdk换成openJdk即可;测试环境采用的jboss+openJdk,部署运行通过

问题三:第三方提供jar包,调用他们的jar包接入新的数据源接口,但本项目之前已经接入些接口,涉及加解密的bcprov-jdk15on.jar不兼容本次新接入接口,升级到高版本,之前老的接口又加解密失败。总结:尽量让第三方提供工具类,遇到问题时方便处理

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
注:下文中的 *** 代表文件名中的版本号。 # 【bcprov-jdk15on-***.jar中文文档.zip】 中包含: 中文文档:【bcprov-jdk15on-***-javadoc-API文档-中文(简体)版.zip】 jar包下载地址:【bcprov-jdk15on-***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【bcprov-jdk15on-***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【bcprov-jdk15on-***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【bcprov-jdk15on-***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: bcprov-jdk15on-***.jar中文文档.zip,java,bcprov-jdk15on-***.jar,org.bouncycastle,bcprov-jdk15on,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,bouncycastle,bcprov,jdk15on,中文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【bcprov-jdk15on-***.jar中文文档.zip】,再解压其中的 【bcprov-jdk15on-***-javadoc-API文档-中文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件; # Maven依赖: ``` <dependency> <groupId>org.bouncycastle</groupId> <artifactId>bcprov-jdk15on</artifactId> <version>***</version> </dependency> ``` # Gradle依赖: ``` Gradle: implementation group: 'org.bouncycastle', name: 'bcprov-jdk15on', version: '***' Gradle (Short): implementation 'org.bouncycastle:bcprov-jdk15on:***' Gradle (Kotlin): implementation("org.bouncycastle:bcprov-jdk15on:***") ``` # 含有的 Java package(包)(此处仅列举3个): ``` org.bouncycastle org.bouncycastle.asn1 org.bouncycastle.asn1.anssi ...... ``` # 含有的 Java class(类)(此处仅列举3个): ``` org.bouncycastle.LICENSE org.bouncycastle.asn1.ASN1ApplicationSpecific org.bouncycastle.asn1.ASN1ApplicationSpecificParser ...... ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值