我认为JCA替代JCE很简单.但是,编写一些测试代码以获取我系统上的所有提供程序后显示情况并非如此.
我注意到以下几点:
MD5withRSA是SunRsaSign和SunJSSE)type超出JCE中的算法第1项是有道理的,因为JCA(对我来说)作为JCE提供者的库/数组来挑选.
第2项有点令人困惑,因为它表明JCA不是一组"相同的"JCE提供者; 对于任何和所有"类型"的提供者来说,它都是某种水坑,JCE接口与否.
那么,JCA,它的供应商和JCE之间的工作关系是什么?提供者是否也存在于独立的孤岛中,或者它们是否相互"构建"/它们之间是否存在依赖关系?
对于那些对代码感兴趣的人和提出这个问题的结果,下面列出了它
import java.security.Provider;
import java.security.Security;
import java.util.ArrayList;
public class ConsoleListJca
{
public static void main(String[] args)
{
for (Provider provider : Security.getProviders())
{
System.out.println("Provider: " + provider.getName() + " (ver " + provider.getVersion() + ")");
System.out.print(" Algorithms: ");
ArrayList<String> algos = new ArrayList<String>();
for (Provider.Service service : provider.getServices())
{
algos.add(String.format( "%s (%s)", service.getAlgorithm(), service.getType()));
}
java.util.Collections.sort(algos);
String algorsStr = algos.toString();
// remove [ …Run Code Online (Sandbox Code Playgroud)