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加解密的实现 ,谢谢这篇文章提供的信息资料。



你可能感兴趣的:(android)