Java 如何以编程方式检查JVM上是否启用了FIPS
Java 12之后,将删除内部包com.sun.net.ssl。Java 如何以编程方式检查JVM上是否启用了FIPS,java,jvm,fips,Java,Jvm,Fips,Java 12之后,将删除内部包com.sun.net.ssl。 是否有任何方法允许我以编程方式检查JVM上是否启用了FIPS 您可以使用java.security.security类来集中安全配置和提供程序,然后检查是否注册了FIPS提供程序 Javadoc: 您可以迭代安全提供程序并检查是否有FIPS提供程序,例如BouncyCastleFipsProvider或任何其他FIPS提供程序 此外,您还可以检查SunJSSE FIP是否处于兼容模式(SunPKCS11 NSS提供程序)。请记住,
是否有任何方法允许我以编程方式检查JVM上是否启用了FIPS 您可以使用
java.security.security
类来集中安全配置和提供程序,然后检查是否注册了FIPS提供程序
Javadoc:
您可以迭代安全提供程序并检查是否有FIPS提供程序,例如BouncyCastleFipsProvider或任何其他FIPS提供程序
此外,您还可以检查SunJSSE FIP是否处于兼容模式(SunPKCS11 NSS提供程序)。请记住,SunJSSE Fips兼容模式在JDK13中被删除,正如评论所说,该提供程序在Java13之前是可用的,但由于Java9,它可能无法正常工作。这是一个考虑和测试的问题。
Javadoc提供程序:)
例如:
Provider[] providers=Security.getProviders()
for (int i=0; i < providers.length;i++){
if (providers[i].getName().contains(“Fips”)) return true;
}
Provider[]providers=Security.getProviders()
for(int i=0;i
希望有帮助。可以更详细地解释您要检查的内容。在Java 12之前你做了哪项检查?这还不够吗?但请提供更多的上下文,说明您之前是如何检查这一点的,以及您具体做了什么need@GotoFinal如果@user1684651真的想实现这一点,那么当他使用Java>=1.8.0_161时,他就不必为此费心了。默认情况下,它是启用的(错误报告中提到了可能的异常情况),并且可以使用例如
Cipher.getMaxAllowedKeyLength(“AES”)
轻松检查。如果结果大于128,则启用Java加密扩展(JCE)无限强度。这仍然会留下一个问题,即问题中与Java>12的关系是什么。基于for providerSunPKCS11 NSS
的SunJSSE FIPS兼容模式自Java 9以来不可用。或者这个bug在这种情况下是无关的。@在重新设计java 9之后,它是次优的,它有一些bug(例如)。该提供程序在Java13之前可用,但可能无法正常工作。这是一个需要考虑的问题。