背景
在实现RSA加密相关功能时需要使用bcprov-jdk.jar包,用于处理js和java默认的RSA算法不一致问题。
方案
- 将bcprov-jdk16-146.jar包放到C:\Program Files\Java\jdk1.8.0_171\jre\lib\ext路径下;
在C:\Program Files\Java\jdk1.8.0_171\jre\lib\security文件下的java.security文件中添加最后加粗的(1~10为原有的):
security.provider.1=sun.security.provider.Sun
security.provider.2=sun.security.rsa.SunRsaSign
security.provider.3=sun.security.ec.SunEC
security.provider.4=com.sun.net.ssl.internal.ssl.Provider
security.provider.5=com.sun.crypto.provider.SunJCE
security.provider.6=sun.security.jgss.SunProvider
security.provider.7=com.sun.security.sasl.Provider
security.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRI
security.provider.9=sun.security.smartcardio.SunPCSC
security.provider.10=sun.security.mscapi.SunMSCAPI
security.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider将bcprov-jdk16-146.jar包放到项目中;
- 然后在项目中使用即可。
问题
配置完后运行项目抛出异常:
java.lang.SecurityException: JCE cannot authenticate the provider BC
...../jre/lib/ext/bcprov-jdk16-146.jar has unsigned entries
解决
将bcprov-jdk16-146.jar包换成bcprov-jdk15-134.jar即可!(项目使用jdk1.8.0_171,eclipse)
(个人实践,仅供参考!)