java.security.NoSuchProviderException: no such provide:BC

在客户端和服务端交互的时候,为了让传输的数据不被泄露,客户端通常将数据加密之后,再发送给服务端,服务端接受到数据之后,在解密。加密解密算法有很多,最常用的还是采用RSA加密解密算法。由于在使用模和指数生成RSA公钥和私钥的时候,不同JDK默认的补位方式不同,android的是RSA/None/NoPadding,java服务端是RSA/None/PKCS1Padding,这样就导致虽然数据能够在客户端加密,但在服务端却不能解密。解决办法为:在用公钥加密和私钥解密的时候,将Cipher cipher = Cipher.getInstance("RSA","BC");  在此需要添加Jar包bcprov-jdk15on-151.jar,下载地址为:http://www.bouncycastle.org/latest_releases.html

再在类中添加static {  Provider provider = new org.bouncycastle.jce.provider.BouncyCastleProvider.BouncyCastleProvider(); Security.addProvider(provider); },最终解决问题。

参考博客:java中RSA加解密的实现 ,谢谢这篇文章提供的信息资料。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值