Return the available implementations for a service type : Provider « Security « Java Tutorial






import java.security.Provider;
import java.security.Security;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Main {
  public static void main(String[] argv) throws Exception {
    Set result = new HashSet();
    String serviceType = "KeyFactory";
    Provider[] providers = Security.getProviders();
    for (int i = 0; i < providers.length; i++) {
      Set keys = providers[i].keySet();
      for (Iterator it = keys.iterator(); it.hasNext();) {
        String key = (String) it.next();
        key = key.split(" ")[0];

        if (key.startsWith(serviceType + ".")) {
          result.add(key.substring(serviceType.length() + 1));
        } else if (key.startsWith("Alg.Alias." + serviceType + ".")) {
          result.add(key.substring(serviceType.length() + 11));
        }
      }
    }
    System.out.println(result);
  }

}
[1.2.840.113549.1.3.1, 
OID.1.2.840.113549.1.1, 
1.2.840.113549.1.1, 
OID.1.2.840.113549.1.3.1, 
1.3.14.3.2.12, 
DSA, DiffieHellman, RSA, DH, 1.2.840.10040.4.1]








36.34.Provider
36.34.1.Security.getProviders()
36.34.2.Listing All Available Cryptographic Services
36.34.3.Return the available implementations for a service type
36.34.4.Get cryptographic security providers
36.34.5.Get a Provider
36.34.6.List the available capabilities for ciphers, key agreement, macs, message digests, signatures and other objects in the BC provider.
36.34.7.Get Provider Info
36.34.8.extends java.security.Provider
36.34.9.extends Provider