w.donahue w.donahue - 2 months ago 37
Android Question

What crypto algorithms does Android support?

I have been googling for hours and cannot find any solid answers but lots of hearsay.

Does anyone know where the documentation is that defines which encryption/signature/hash algorithms the Android OS supports.

I have heard from forums that not all phones support the same algorithms so I am looking for what common algorithms every Android phone supports.

Answer

Try this to list all security providers:

Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
    Log.i("CRYPTO","provider: "+provider.getName());
    Set<Provider.Service> services = provider.getServices();
    for (Provider.Service service : services) {
        Log.i("CRYPTO","  algorithm: "+service.getAlgorithm());
    }
}

Update

Here is a list for my Nexus S (OS 2.3.4):

provider: AndroidOpenSSL
 algorithm: SHA-384
 algorithm: SHA-1
 algorithm: SSLv3
 algorithm: MD5
 algorithm: SSL
 algorithm: SHA-256
 algorithm: TLS
 algorithm: SHA-512
 algorithm: TLSv1
 algorithm: Default
provider: DRLCertFactory
 algorithm: X509
provider: BC
 algorithm: PKCS12
 algorithm: DESEDE
 algorithm: DH
 algorithm: RC4
 algorithm: PBEWITHSHAAND128BITAES-CBC-BC
 algorithm: DESEDE
 algorithm: Collection
 algorithm: SHA-1
 algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
 algorithm: PBEWITHSHAAND192BITAES-CBC-BC
 algorithm: DESEDEWRAP
 algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
 algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
 algorithm: AES
 algorithm: HMACSHA256
 algorithm: OAEP
 algorithm: HMACSHA256
 algorithm: HMACSHA384
 algorithm: DSA
 algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
 algorithm: DES
 algorithm: PBEWITHMD5ANDDES
 algorithm: SHA1withDSA
 algorithm: PBEWITHMD5ANDDES
 algorithm: BouncyCastle
 algorithm: PKIX
 algorithm: PKCS12PBE
 algorithm: DSA
 algorithm: RSA
 algorithm: PBEWITHSHA1ANDDES
 algorithm: DESEDE
 algorithm: PBEWITHSHAAND128BITRC2-CBC
 algorithm: PBEWITHSHAAND128BITRC2-CBC
 algorithm: PBEWITHSHAAND256BITAES-CBC-BC
 algorithm: PBEWITHSHAAND128BITRC4
 algorithm: DH
 algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
 algorithm: PBEWITHSHAAND128BITAES-CBC-BC
 algorithm: PBEWITHSHAAND40BITRC2-CBC
 algorithm: HMACSHA384
 algorithm: AESWRAP
 algorithm: PBEWITHSHAAND192BITAES-CBC-BC
 algorithm: SHA256WithRSAEncryption
 algorithm: DES
 algorithm: HMACSHA512
 algorithm: HMACSHA1
 algorithm: DH
 algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
 algorithm: PKIX
 algorithm: PBEWITHMD5ANDRC2
 algorithm: SHA-256
 algorithm: PBEWITHSHA1ANDDES
 algorithm: HMACSHA512
 algorithm: SHA384WithRSAEncryption
 algorithm: DES
 algorithm: BLOWFISH
 algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
 algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
 algorithm: PBEWITHSHAAND256BITAES-CBC-BC
 algorithm: DSA
 algorithm: PBEWITHSHAAND40BITRC2-CBC
 algorithm: BLOWFISH
 algorithm: PBEWITHSHAAND40BITRC4
 algorithm: PBKDF2WithHmacSHA1
 algorithm: PBEWITHSHAAND40BITRC4
 algorithm: HMACSHA1
 algorithm: AES
 algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
 algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
 algorithm: PBEWITHHMACSHA
 algorithm: DH
 algorithm: BKS
 algorithm: NONEWITHDSA
 algorithm: DES
 algorithm: PBEWITHMD5ANDRC2
 algorithm: DSA
 algorithm: PBEWITHSHAANDTWOFISH-CBC
 algorithm: SHA512WithRSAEncryption
 algorithm: HMACMD5
 algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
 algorithm: PBEWITHSHA1ANDRC2
 algorithm: ARC4
 algorithm: PBEWITHHMACSHA1
 algorithm: AES
 algorithm: PBEWITHHMACSHA1
 algorithm: MD5
 algorithm: RSA
 algorithm: PBEWITHSHAANDTWOFISH-CBC
 algorithm: PBEWITHSHA1ANDRC2
 algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
 algorithm: PBEWITHSHAAND128BITRC4
 algorithm: SHA-384
 algorithm: RSA
 algorithm: DESEDE
 algorithm: SHA-512
 algorithm: X.509
 algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
 algorithm: MD5WithRSAEncryption
 algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
 algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
 algorithm: BLOWFISH
 algorithm: DH
 algorithm: SHA1WithRSAEncryption
 algorithm: HMACMD5
 algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
provider: Crypto
 algorithm: SHA1withDSA
 algorithm: SHA-1
 algorithm: DSA
 algorithm: SHA1PRNG
provider: HarmonyJSSE
 algorithm: X509
 algorithm: SSLv3
 algorithm: TLS
 algorithm: TLSv1
 algorithm: X509
 algorithm: SSL