linux上java解加密(AES CBC)异常

本文讲述了在Linux环境下JavaMapReduce数据清洗时遇到的AES/CBC加密解密异常,通过添加BouncyCastleProviderjar包,调整java.security文件并重启应用解决了问题,重点在于如何在Docker容器中处理依赖和配置。
摘要由CSDN通过智能技术生成

linux上java解加密(AES/CBC)异常:java.lang.SecurityException: JCE cannot authenticate the provider BC办法

用mapreduce做数据清洗的时候,需要对数据进行解密,加密方法是:AES/CBC/PKCS7Padding,由于java本身不支持,需要添加依赖,以下为解决方法:

因为我的服务使用docker容器启动的,所以以下步骤需要在docker容器中进行操作

  • 1.找包:bcprov-jdk15on-1.56.jar

看看开发给的jar包里有没有:

jar -tvf wallet-summarize-1.0-SNAPSHOT.jar | grep bcprov

如果有,解压:

jar -xvf wallet-summarize-1.0-SNAPSHOT.jar BOOT-INF/lib/bcprov-jdk15on-1.55.jar

如果没有,下载:

https://mvnrepository.com/artifact/org.bouncycastle/bcprov-jdk15on
  • 2.放包到:$JAVA_HOME/jre/lib/ext 下

  • 3.找到文件:$JAVA_HOME/jre/lib/security/java.security

在security.provider.9 下新增一行:

security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
  • 4.重启应用验证;

其实,以上问题是由于linux版本java与windows有一些区别导致的,解决方法如下:

  • 1、在mvn仓库中找到下载的包bcprov-jdk15on-1.56.jar,或者如果你不用maven,只要能下载到这个包,放到linux的$JAVA_HOME/jre\lib\ext下面;
  • 2、配置我的安全属性文件:vim /usr/java/jdk1.8.0_112/jre/lib/security/java.security
1 security.provider.1=sun.security.provider.Sun 
 2 security.provider.2=sun.security.rsa.SunRsaSign 
 3 security.provider.3=sun.security.ec.SunEC 
 4 security.provider.4=com.sun.net.ssl.internal.ssl.Provider 
 5 security.provider.5=com.sun.crypto.provider.SunJCE 
 6 security.provider.6=sun.security.jgss.SunProvider 
 7 security.provider.7=com.sun.security.sasl.Provider 
 8 security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI 
 9 security.provider.9=sun.security.smartcardio.SunPCSC 
10 security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider

第10行是我添加的,是由自己文件内容编号来确定的;

完成这些配置后,重新执行这个任务,成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰哥的技术杂货铺

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值