是否正确理解为了使用例如Java在Java中进行加密。 Cipher
,我必须选择一个外部提供程序进行设置,即JDK没有附带并包含“默认”提供程序?
答案 0 :(得分:3)
这取决于您拥有的Java版本。从Java 1.4开始,JCE默认包含在默认提供程序堆栈中。在{$JRE_HOME}/lib/security/java.policy
查看您的默认提供商。你会看到像
提供商列表及其优先订单(见上文): 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
表示默认的提供者堆栈(此处的顺序很重要)。
答案 1 :(得分:0)
您可以检查 SSL/TLS 握手的默认算法,并根据需要进行更改。
查看文件 {$JRE_HOME}/lib/security/java.policy
:
ssl.KeyManagerFactory.algorithm=SunX509
ssl.TrustManagerFactory.algorithm=PKIX