Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何以编程方式检查JVM上是否启用了FIPS_Java_Jvm_Fips - Fatal编程技术网

Java 如何以编程方式检查JVM上是否启用了FIPS

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提供程序)。请记住,

Java 12之后,将删除内部包com.sun.net.ssl。
是否有任何方法允许我以编程方式检查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 provider
SunPKCS11 NSS
SunJSSE FIPS兼容模式自Java 9以来不可用。或者这个bug在这种情况下是无关的。@在重新设计java 9之后,它是次优的,它有一些bug(例如)。该提供程序在Java13之前可用,但可能无法正常工作。这是一个需要考虑的问题。