>我已经在我的机器上成功安装了加密库,因此安装后我在jrelibsecurityjava.security
中看到这些行:
security.provider.11=ru.CryptoPro.JCP.JCP
security.provider.12=ru.CryptoPro.Crypto.CryptoProvider
security.provider.13=ru.CryptoPro.reprov.RevCheck
security.provider.14=ru.CryptoPro.ssl.Provider
security.provider.15=ru.CryptoPro.JCSP.JCSP
这些行会自动出现在java.security
文件中。此外,当我导入所需的模块时,我没有收到任何错误:
import ru.CryptoPro.JCP.*;
import ru.CryptoPro.JCP.KeyStore.*;
import ru.CryptoPro.JCP.params.JCPProtectionParameter;
import ru.CryptoPro.JCSP.JCSP;
完全没问题。但是,当我在代码中添加一个小命令时:
KeyStore ks = KeyStore.getInstance("REGISTRY", JCSP.PROVIDER_NAME);
我收到一长串错误:
java.security.NoSuchProviderException: no such provider: JCSP at
sun.security.jca.GetInstance.getService(Unknown Source) at
sun.security.jca.GetInstance.getInstance(Unknown Source) at
java.security.Security.getImpl(Unknown Source) at
java.security.KeyStore.getInstance(Unknown Source) at
com.test.examples.Test.doGet(Test.java:40) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:622) at
javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at
... list goes on
这些错误消息的可能原因是什么?
我在不同的安全提供程序( ERACOM
)上遇到了类似的问题,并通过显式提供程序注册解决了它:
Security.addProvider(new ERACOMProvider());
尝试以相同的方式注册提供程序,只需创建并实例并使用java.security.Security#addProvider
方法注册它。我希望,它会帮助你。