背景
工作中和其他第三方進行通訊的時候,通常需要對通訊中的重要信息進行加密,或者使用證書來保證安全,在使用bcprov-jdk16-146包提供的加解密方法時,報了
Java.security.NoSuchProviderException: no such provider: BC
這個錯誤,從錯誤來看是java security中沒有找到BC的安全模式。
解決方法
有兩種解決方法:
1.直接修改jre環境下的security配置文件
找到JAVA_HOME/jre/lib/security/java.security文件,在里面可以看到有幾行是以“security.provider.”開頭的,在它的最后序號之上加一行,如我的最后的序號是10,加入以下這行:
security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
這樣就可以了(前提是工程自己將bcprov-jdk16-146導入了依賴包使用)
2.在代碼中修改
可以在使用BC方法前,在代碼中手動將BC方法添加進環境信息內,例如:
Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
直接使用這行代碼可以臨時將BC方法添加進環境信息,使線程接下來的使用不會報錯,比較適用於不傾向改動系統環境的情況。
參考: