我们已将Java产品配置为仅使用经过FIPS验证的RSA JCE加密提供程序。但是,当仅在java.security中列出RSA库时,该产品将无法运行。因此,有些事情要求来自其他提供商的非FIPS算法。
通过消除过程,我们可以判断哪些罐子是成功操作所必需的,但这并不能告诉我们正在请求哪些算法,或者由谁来执行。
这似乎是一个经常被问到的问题,但显然我们没有偶然发现正确的文档或Google搜索字符串:是否有任何可靠,方便且一致的机制来确定哪些JCE提供程序正在使用运行JVM实例?
答案 0 :(得分:2)
您可以使用Security.getProviders();
枚举提供商这是an example listing providers and the algorithms they implement。
答案 1 :(得分:1)
我建议您实现自己的ClassLoader,并让它记录调试信息。
尽管如此,我不确定是否会让你知道每个加载FooJCEProvider的类,而不仅仅是第一个加载FooJCEProvider的类。
或者,您是否尝试过使用jconsole? “类加载MBean还具有Verbose属性,可以设置为启用或禁用类加载详细跟踪”
答案 2 :(得分:1)
正如布鲁诺所说,你可以遍历所有提供者。
在运行时,您可以使用getProvider方法检查您的密码使用的提供商。
答案 3 :(得分:0)
System.setProperty("javax.net.debug","all")
会给你一些有用的东西吗?