ListAlgorithms.java Source code

Java tutorial

Introduction

Here is the source code for ListAlgorithms.java

Source

/*
KeyGenerator:
        HMAC-MD2
        GOST
        HMACRIPEMD160
        ARC4
        CAST5
        2.16.840.1.101.3.4.1.44
        HMAC-SHA384
        2.16.840.1.101.3.4.2
        HMAC-MD4
        HMAC-SHA1
        HMAC-RIPEMD128
        HMAC-SHA512
        2.16.840.1.101.3.4.1.5
        DESEDEWRAP
        TWOFISH
        HMACMD4
        2.16.840.1.101.3.4.1.24
        2.16.840.1.101.3.4.1.42
        RIJNDAEL
        IDEA
        2.16.840.1.101.3.4.42
        RC4
        1.2.840.113549.2.10
        RC5
        HMAC-MD5
        2.16.840.1.101.3.4.22
        HMAC-SHA224
        1.2.840.113533.7.66.10
        BLOWFISH
        HMACMD2
        HMACRIPEMD128
        RC2
        2.16.840.1.101.3.4.1.23
        GOST-28147
        1.2.840.113549.2.9
        HMACSHA512
        DESEDE
        CAMELLIA
        SERPENT
        RC5-64
        RC5-32
        HMAC-SHA256
        HMACSHA384
        HMAC-RIPEMD160
        1.2.840.113549.3.7
        AESWRAP
        HMACTIGER
        2.16.840.1.101.3.4.1.22
        RC6
        HMACMD5
        1.2.840.113549.2.7
        HMACSHA256
        1.3.14.3.2.7
        2.16.840.1.101.3.4.1.21
        2.16.840.1.101.3.4.1.2
        1.2.643.2.2.21
        1.2.840.113549.2.8
        1.2.840.113549.2.11
        1.2.840.113549.3.4
        2.16.840.1.101.3.4.1.45
        2.16.840.1.101.3.4.1.41
        2.16.840.1.101.3.4.1.1
        2.16.840.1.101.3.4.1.3
        HMACSHA224
        2.16.840.1.101.3.4.1.43
        2.16.840.1.101.3.4.1.4
        1.3.6.1.4.1.188.7.1.1.2
        2.16.840.1.101.3.4.1.25
        CAST6
        HMACSHA1
        1.2.840.113549.3.2
        SKIPJACK
        AES
        DES
        GOST28147
KeyFactory:
        EC
        ECDH
        1.2.840.113549.1.1
        OID.1.2.840.113549.1.1
        1.2.643.2.2.19
        DH
        ECDSA
        1.3.14.3.2.12
        1.2.840.113549.1.1.1
        GOST-3410-94
        RSA
        ECGOST-3410
        1.2.840.10045.2.1
        DSA ImplementedIn
        GOST3410
        DSA
        GOST-3410
        ELGAMAL
        1.2.840.10040.4.1
        1.2.643.2.2.20
        ECDHC
        GOST-3410-2001
        ECGOST3410
        ElGamal
KeyPairGenerator:
        EC
        ECDH
        1.2.840.113549.1.1
        OID.1.2.840.113549.1.1
        DSA KeySize
        DH
        1.3.14.3.2.12
        ECDSA
        OID.1.2.840.10040.4.1
        1.2.840.113549.1.1.1
        GOST-3410-94
        ECGOST-3410
        RSA
        GOST3410
        ECIES
        DSA ImplementedIn
        GOST-3410
        DSA
        ELGAMAL
        1.2.840.10040.4.1
        ECDHC
        GOST-3410-2001
        ECGOST3410
Ciphers:
        ELGAMAL/NONE/NOPADDING
        RSA//NOPADDING
        PBEWITHSHA1AND192BITAES-CBC-BC
        OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC
        1.2.840.113549.1.1.7
        CAST5
        ELGAMAL/PKCS1
        PBEWITHSHA1AND128BITRC2-CBC
        1.2.840.113549.1.12.1.3
        ECIES
        RSA//RAW
        PBEWITHSHAAND40BITRC2-CBC
        PBEWITHSHAAND3-KEYTRIPLEDES-CBC
        2.16.840.1.101.3.4.1.5
        1.2.840.113549.1.12.1.6
        DESEDEWRAP
        PBEWITHSHA-1AND192BITAES-CBC-BC
        2.16.840.1.101.3.4.1.24
        2.16.840.1.101.3.4.1.42
        PBEWITHSHA256AND256BITAES-CBC-BC
        RIJNDAEL
        IDEA
        2.16.840.1.101.3.4.42
        RC4
        PBEWITHSHA1AND128BITAES-CBC-BC
        PBEWITHSHA-1AND256BITAES-CBC-BC
        RC5
        1.2.840.113549.1.12.1.2
        RC2
        1.2.840.113549.1.9.16.3.6
        PBEWITHSHA1ANDDESEDE
        RSA/OAEP
        SERPENT
        RC5-64
        RC5-32
        1.2.840.113549.3.7
        AESWRAP
        RSA/PKCS1
        2.16.840.1.101.3.4.1.22
        RC6
        PBEWITHMD5ANDRC2
        2.16.840.1.101.3.4.1.2
        2.16.840.1.101.3.4.1.21
        ARCFOUR
        1.2.643.2.2.21
        2.5.8.1.1
        IES
        1.2.840.113549.1.12.1.5
        2.16.840.1.101.3.4.1.45
        2.16.840.1.101.3.4.1.41
        2.16.840.1.101.3.4.1.1
        2.16.840.1.101.3.4.1.3
        PBEWITHSHA1ANDRC2
        RSA//OAEPPADDING
        2.16.840.1.101.3.4.1.43
        2.16.840.1.101.3.4.1.4
        PBEWITHSHA1AND40BITRC2-CBC
        PBEWITHSHAAND256BITAES-CBC-BC
        PBEWITHSHA256AND192BITAES-CBC-BC
        SKIPJACK
        DES
        PBEWITHSHAAND40BITRC4
        BROKENPBEWITHMD5ANDDES
        PBEWITHMD5AND256BITAES-CBC-OPENSSL
        PBEWITHSHA1AND2-KEYTRIPLEDES-CBC
        RSA/1
        PBEWITHMD5AND192BITAES-CBC-OPENSSL
        GOST
        ARC4
        PBEWITHSHAAND128BITRC4
        1.2.840.113549.1.12.1.1
        RSA/2
        2.16.840.1.101.3.4.1.44
        RSA//ISO9796-1PADDING
        PBEWITHSHAAND2-KEYTRIPLEDES-CBC
        2.16.840.1.101.3.4.2
        RC2WRAP
        PBEWITHSHA-256AND256BITAES-CBC-BC
        PBEWITHSHA1ANDDES
        PBEWITHSHAANDTWOFISH-CBC
        TWOFISH
        1.2.840.113549.1.9.16.3.7
        ELGAMAL/NONE/PKCS1PADDING
        1.2.840.113549.1.12.1.4
        PBEWITHSHAAND128BITRC2-CBC
        PBEWITHSHA1AND128BITRC4
        PBEWITHSHAAND192BITAES-CBC-BC
        2.16.840.1.101.3.4.22
        PBEWithSHAAnd3KeyTripleDES
        BLOWFISH
        1.2.840.113533.7.66.10
        2.16.840.1.101.3.4.1.23
        GOST-28147
        ELGAMAL/ECB/PKCS1PADDING
        DESEDE
        PBEWITHSHA-256AND128BITAES-CBC-BC
        RSA/ISO9796-1
        RSA//PKCS1PADDING
        CAMELLIA
        PBEWITHSHA-1AND128BITAES-CBC-BC
        BROKENPBEWITHSHA1ANDDES
        BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC
        PBEWITHSHA1AND3-KEYTRIPLEDES-CBC
        RSA
        ELGAMAL
        PBEWITHSHA256AND128BITAES-CBC-BC
        RSA/RAW
        1.3.14.3.2.7
        PBEWITHSHA-256AND192BITAES-CBC-BC
        PBEWITHSHA1AND40BITRC4
        1.2.840.113549.3.4
        PBEWITHMD5AND128BITAES-CBC-OPENSSL
        BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC
        PBEWITHSHAAND128BITAES-CBC-BC
        1.2.840.113549.1.1.1
        OLDPBEWITHSHAANDTWOFISH-CBC
        2.16.840.1.101.3.4.1.25
        1.3.6.1.4.1.188.7.1.1.2
        CAST6
        PBEWITHSHA1AND256BITAES-CBC-BC
        1.2.840.113549.3.2
        PBEWITHSHAANDIDEA-CBC
        AES
        PBEWITHMD5ANDDES
        GOST28147
KeyAgreeents:
        ECDH
        ECDHC
        DH
Macs:
        RC2MAC
        HMAC-MD2
        IDEAMAC/CFB8
        HMAC/SHA512
        HMACRIPEMD160
        RC5MAC
        HMAC-SHA384
        HMAC-MD4
        HMAC/SHA1
        DESEDEMAC64
        HMAC-SHA1
        HMAC-RIPEMD128
        HMAC-SHA512
        HMAC/RIPEMD128
        GOST28147MAC
        PBEWITHHMACRIPEMD160
        PBEWITHHMACSHA1
        RC2MAC/CFB8
        DESEDE64
        HMACMD4
        PBEWITHHMACSHA
        SKIPJACKMAC
        IDEA
        SKIPJACK/CFB8
        HMAC/MD2
        HMAC/MD5
        RC5/CFB8
        RC2/CFB8
        OLDHMACSHA512
        1.2.840.113549.2.10
        HMAC/SHA224
        DESWITHISO9797
        RC5
        DES/CFB8
        HMAC-MD5
        HMAC-SHA224
        HMACMD2
        HMACRIPEMD128
        ISO9797ALG3MAC
        RC2
        DESEDE/CFB8
        1.2.840.113549.2.9
        HMACSHA512
        DESEDE
        HMAC-SHA256
        HMACSHA384
        HMAC/Tiger
        HMAC-RIPEMD160
        IDEA/CFB8
        DESEDEMAC/CFB8
        1.3.14.3.2.26
        HMAC/MD4
        1.2.840.113549.2.7
        HMACMD5
        IDEAMAC
        HMACSHA256
        HMACTiger
        RC5MAC/CFB8
        HMAC/SHA384
        1.2.840.113549.2.8
        1.2.840.113549.2.11
        DESMAC/CFB8
        HMACSHA224
        DESMAC
        ISO9797ALG3
        HMAC/SHA256
        DESEDEMAC
        OLDHMACSHA384
        SKIPJACKMAC/CFB8
        HMAC/RIPEMD160
        HMAC-Tiger
        HMACSHA1
        SKIPJACK
        DESISO9797MAC
        DES
MessageDigests:
        1.3.36.3.2.2
        RIPEMD320
        SHA224
        1.2.840.113549.2.2
        SHA384
        SHA ImplementedIn
        GOST
        1.3.36.3.2.1
        MD5
        1.2.840.113549.2.4
        SHA256
        SHA-512
        1.3.36.3.2.3
        RIPEMD128
        MD2
        1.3.14.3.2.26
        RIPEMD256
        SHA-256
        GOST3411
        MD5 ImplementedIn
        WHIRLPOOL
        1.2.643.2.2.9
        SHA1
        SHA-224
        MD4
        2.16.840.1.101.3.4.2.3
        2.16.840.1.101.3.4.2.1
        1.2.840.113549.2.5
        RIPEMD160
        SHA-1
        2.16.840.1.101.3.4.2.4
        SHA
        Tiger
        SHA512
        GOST-3411
        SHA-384
        2.16.840.1.101.3.4.2.2
Signatures:
        SHA384withRSA
        SHA1withRSAEncryption
        NONEwithDSA SupportedKeyClasses
        RIPEMD160withRSA
        GOST-3410
        SHA224withRSAandMGF1
        SHA256WITHECDSA
        SHA224withRSA
        SHA512WITHECDSA
        SHA1WithRSAEncryption
        MD4WithRSAEncryption
        1.2.840.113549.1.1.4
        MD2WITHRSAENCRYPTION
        ECDSAwithSHA1
        MD5andSHA1withRSA
        GOST3411WithECGOST3410
        SHA1withRSAandMGF1
        SHA1withRSA/ISO9796-2
        SHA256withRSA
        1.2.643.2.2.3
        SHA1WITHRSA
        SHA256withRSAandMGF1
        GOST3411WITHECGOST3410
        RawDSA
        GOST-3410-94
        RIPEMD128WithRSAEncryption
        SHA384WITHRSAENCRYPTION
        1.3.14.3.2.26with1.2.840.113549.1.1.1
        SHA-1/DSA
        MD2withRSAEncryption
        RIPEMD160withRSAEncryption
        RIPEMD160WITHRSAENCRYPTION
        SHA1WithRSA
        SHA1WithECDSA
        1.3.14.3.2.29
        SHA224withRSAEncryption
        SHA/DSA
        SHA1withDSA KeySize
        SHA512WithRSA
        SHA1WITHDSA
        SHA512WithRSAEncryption
        SHA256WITHRSAENCRYPTION
        GOST3411withECGOST3410
        SHA512withRSA/PSS
        RIPEMD160WithRSAEncryption
        MD5WITHRSAENCRYPTION
        RIPEMD160WithRSA/ISO9796-2
        SHA384withRSA SupportedKeyClasses
        GOST3410
        SHA256WITHECNR
        MD5withRSA/ISO9796-2
        SHA1withRSA
        SHA256WithRSAEncryption
        SHA1withRSA/PSS
        SHA384withRSAEncryption
        1.3.14.3.2.26with1.2.840.113549.1.1.5
        ECDSAWITHSHA1
        RMD160WITHRSA
        NONEwithDSA
        1.2.840.113549.1.1.11
        RIPEMD256WithRSAEncryption
        SHA256withRSAEncryption
        1.2.840.10040.4.3
        SHA512withRSAEncryption
        1.2.840.113549.1.1.3
        SHA384WithRSAEncryption
        SHA224withRSA/PSS
        1.2.840.113549.1.1.12
        MD4withRSA
        MD5WITHRSA
        RAWDSA
        1.2.643.2.2.4
        RMD160/RSA
        1.3.14.3.2.13
        ECGOST-3410
        DSAWithSHA1
        1.2.840.113549.1.1.13
        OID.1.3.14.3.2.29
        RIPEMD160withRSA/ISO9796-2
        1.2.840.10045.4.1
        SHA256withRSA SupportedKeyClasses
        RIPEMD256WithRSA
        1.2.840.113549.1.1.5
        SHA384withRSAandMGF1
        SHA1withRSA SupportedKeyClasses
        SHA1/RSA
        GOST3411WITHGOST3410
        SHA224WithRSA
        SHA512withRSAandMGF1
        SHA1WithDSA
        SHA1WITHECNR
        OID.1.2.840.113549.1.1.5
        SHA512withRSA
        ECDSA
        SHA512WITHRSAENCRYPTION
        OID.1.2.840.113549.1.1.11
        MD4withRSAEncryption
        MD2WithRSA
        RIPEMD160WithRSA
        SHA1WithRSA/ISO9796-2
        MD5withRSA SupportedKeyClasses
        MD4WithRSA
        DSAwithSHA1
        RIPEMD160WITHRSA
        RSASSA-PSS
        GOST3411WithGOST3410
        OID.1.2.840.113549.1.1.13
        MD5WithRSAEncryption
        1.3.36.3.3.1.4
        1.2.840.113549.1.1.14
        MD2withRSA SupportedKeyClasses
        1.2.840.113549.1.1.2
        MD2withRSA
        SHA384WITHECNR
        SHAwithDSA
        MD4/RSA
        RIPEMD256withRSA
        DSA
        SHA-1/RSA
        1.2.840.113549.2.5with1.2.840.113549.1.1.1
        SHA384WITHECDSA
        OID.1.2.840.113549.1.1.12
        OID.1.2.840.113549.1.1.2
        1.3.36.3.3.1.3
        1.2.840.113549.1.1.10
        OID.1.2.840.10040.4.3
        OID.1.2.840.113549.1.1.4
        SHA512withRSA SupportedKeyClasses
        MD5WithRSA/ISO9796-2
        GOST3411withGOST3410
        SHA224WITHECDSA
        MD5withRSAEncryption
        MD5withRSA
        DSS
        SHA224WithRSAEncryption
        ECDSAWithSHA1
        1.3.36.3.3.1.2
        RIPEMD128withRSA
        SHA384withRSA/PSS
        SHA1WITHECDSA
        1.3.14.3.2.26with1.2.840.10040.4.3
        SHA1WITHRSAENCRYPTION
        MD2/RSA
        RIPEMD-160/RSA
        RMD160withRSA
        SHA512WITHECNR
        1.3.14.3.2.27
        MD5WithRSA
        MD2WithRSAEncryption
        MD5/RSA
        DSAWITHSHA1
        SHA1withDSA
        SHA384WithRSA
        1.3.14.3.2.26with1.2.840.10040.4.1
        SHA256withRSA/PSS
        SHA1/DSA
        NONEWITHDSA
        SHA1withDSA ImplementedIn
        SHA1withDSA SupportedKeyClasses
        SHA256WithRSA
        ECGOST3410
        RIPEMD128WithRSA
        GOST-3410-2001
        SHA224WITHECNR
        SHA1withECDSA
    
*/
import java.security.Provider;
import java.security.Security;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class ListAlgorithms {
    public static void printSet(String setName, Set algorithms) {
        System.out.println(setName + ":");
        if (algorithms.isEmpty()) {
            System.out.println("            None available.");
        } else {
            Iterator it = algorithms.iterator();
            while (it.hasNext()) {
                String name = (String) it.next();

                System.out.println("            " + name);
            }
        }
    }

    public static void main(String[] args) {
        Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());

        Provider[] providers = Security.getProviders();
        Set<String> ciphers = new HashSet<String>();
        Set<String> keyAgreements = new HashSet<String>();
        Set<String> macs = new HashSet<String>();
        Set<String> messageDigests = new HashSet<String>();
        Set<String> signatures = new HashSet<String>();
        Set<String> keyFactory = new HashSet<String>();
        Set<String> keyPairGenerator = new HashSet<String>();
        Set<String> keyGenerator = new HashSet<String>();

        for (int i = 0; i != providers.length; i++) {
            Iterator it = providers[i].keySet().iterator();

            while (it.hasNext()) {
                String entry = (String) it.next();

                if (entry.startsWith("Alg.Alias.")) {
                    entry = entry.substring("Alg.Alias.".length());
                }

                if (entry.startsWith("Cipher.")) {
                    ciphers.add(entry.substring("Cipher.".length()));
                } else if (entry.startsWith("KeyAgreement.")) {
                    keyAgreements.add(entry.substring("KeyAgreement.".length()));
                } else if (entry.startsWith("Mac.")) {
                    macs.add(entry.substring("Mac.".length()));
                } else if (entry.startsWith("MessageDigest.")) {
                    messageDigests.add(entry.substring("MessageDigest.".length()));
                } else if (entry.startsWith("Signature.")) {

                    signatures.add(entry.substring("Signature.".length()));

                } else if (entry.startsWith("KeyPairGenerator.")) {
                    keyPairGenerator.add(entry.substring("KeyPairGenerator.".length()));
                } else if (entry.startsWith("KeyFactory.")) {
                    keyFactory.add(entry.substring("KeyFactory.".length()));
                } else if (entry.startsWith("KeyGenerator.")) {
                    keyGenerator.add(entry.substring("KeyGenerator.".length()));

                } else {
                    System.out.println(entry);
                }
            }
        }

        printSet("KeyGenerator", keyGenerator);
        printSet("KeyFactory", keyFactory);
        printSet("KeyPairGenerator", keyPairGenerator);
        printSet("Ciphers", ciphers);
        printSet("KeyAgreeents", keyAgreements);
        printSet("Macs", macs);
        printSet("MessageDigests", messageDigests);
        printSet("Signatures", signatures);
    }
}