7

我们已将 Java 产品配置为仅使用 FIPS 验证的 RSA JCE 加密提供程序。但是,当 java.security 中仅列出 RSA 库时,该产品将无法工作。因此,有些东西正在向其他提供商请求非 FIPS 算法。

通过消除过程,我们可以知道哪些 jar 是成功操作所必需的,但这并不能告诉我们正在请求哪些算法,或者由谁请求。

这似乎是一个常见问题,但显然我们没有偶然发现正确的文档或 Google 搜索字符串:是否有任何可靠、方便且一致的机制来确定正在运行的 JVM 实例中使用了哪些 JCE 提供程序?

4

4 回答 4

3

那么您可以使用Security.getProviders()枚举提供者;

这是一个列出提供程序及其实现的算法的示例

于 2011-05-24T18:30:09.980 回答
1

正如布鲁诺所说,您可以遍历所有提供者。

在运行时,您可以使用getProvider方法检查您的 Cipher 正在使用哪个提供程序。

于 2011-05-25T01:56:44.067 回答
1

我会建议实现你自己的ClassLoader,并让它记录调试信息。

不过,我不确定这是否会让您了解加载 FooJCEProvider 的每个类,而不仅仅是加载 FooJCEProvider 的第一个类。

或者,您是否尝试过使用jconsole?“类加载MBean也有Verbose属性,可以设置开启或关闭类加载详细跟踪”

于 2011-05-24T23:24:08.890 回答
0

有没有System.setProperty("javax.net.debug","all")给你有用的东西?

于 2011-05-23T19:55:58.507 回答