工作需对接文档,用到sm4加密。
使用对接方提供的javaDemo,然后报这个错java.security.NoSuchAlgorithmException:Provider BC does not provide SM4/ECB/PKCS5Padding
判断是jar包版本的问题,导入同版本的jar包还是报这个错,然后一直是在jdk中Cipher类和android的Cipher类找不同。
最后是在众多文章中找到了打印版本号的方法:Security.getProvider(BouncyCastleProvider.PROVIDER_NAME).getVersion()
发现和我导入的jar包版本不一致,
解决方法:在
Cipher in = Cipher.getInstance(algorithmname, "BC");此行代码前加入这两行代码
Security.removeProvider(BouncyCastleProvider.PROVIDER_NAME);
Security.addProvider(new BouncyCastleProvider());
解决!开心下班