I tested the supported transformation
s for the Cipher
class in javax.crypto
on various Android SDKs.
Here is the test code:
public static void getProviders() {
Provider[] providers = Security.getProviders();
for (Provider provider : providers) {
Set<Service> services = provider.getServices();
for (Service service : services) {
if (service.getType().equals("Cipher")) {
System.out.println("Provider: " + provider.getName() + ", Algorithm: " + service.getAlgorithm());
}
}
}
}
Here are the results:
Android API level 19 (Android 4.4)
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CFB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CTR/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CTR/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/OFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/OFB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CFB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/OFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/OFB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: ARC4
Provider: BC, Algorithm: AES
Provider: BC, Algorithm: AESWRAP
Provider: BC, Algorithm: PBEWITHSHAAND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
Provider: BC, Algorithm: ARC4
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC4
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC4
Provider: BC, Algorithm: BLOWFISH
Provider: BC, Algorithm: DES
Provider: BC, Algorithm: PBEWITHMD5ANDDES
Provider: BC, Algorithm: PBEWITHSHA1ANDDES
Provider: BC, Algorithm: DESEDE
Provider: BC, Algorithm: DESEDEWRAP
Provider: BC, Algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHMD5ANDRC2
Provider: BC, Algorithm: PBEWITHSHA1ANDRC2
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAANDTWOFISH-CBC
Provider: BC, Algorithm: RSA
Android API level 21 (Android 5.0)
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CTR/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/OFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/OFB/NoPadding
Provider: AndroidOpenSSL, Algorithm: ARC4
Provider: BC, Algorithm: AES
Provider: BC, Algorithm: AESWRAP
Provider: BC, Algorithm: GCM
Provider: BC, Algorithm: PBEWITHSHAAND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
Provider: BC, Algorithm: ARC4
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC4
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC4
Provider: BC, Algorithm: BLOWFISH
Provider: BC, Algorithm: DES
Provider: BC, Algorithm: PBEWITHMD5ANDDES
Provider: BC, Algorithm: PBEWITHSHA1ANDDES
Provider: BC, Algorithm: DESEDE
Provider: BC, Algorithm: DESEDEWRAP
Provider: BC, Algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHMD5ANDRC2
Provider: BC, Algorithm: PBEWITHSHA1ANDRC2
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAANDTWOFISH-CBC
Provider: BC, Algorithm: RSA
Android API level 23 (Android 6.0)
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CTR/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: ARC4
Provider: AndroidOpenSSL, Algorithm: AES/GCM/NoPadding
Provider: BC, Algorithm: AES
Provider: BC, Algorithm: AESWRAP
Provider: BC, Algorithm: AES/GCM/NOPADDING
Provider: BC, Algorithm: PBEWITHSHAAND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
Provider: BC, Algorithm: ARC4
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC4
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC4
Provider: BC, Algorithm: BLOWFISH
Provider: BC, Algorithm: DES
Provider: BC, Algorithm: PBEWITHMD5ANDDES
Provider: BC, Algorithm: PBEWITHSHA1ANDDES
Provider: BC, Algorithm: DESEDE
Provider: BC, Algorithm: DESEDEWRAP
Provider: BC, Algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHMD5ANDRC2
Provider: BC, Algorithm: PBEWITHSHA1ANDRC2
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAANDTWOFISH-CBC
Provider: BC, Algorithm: RSA
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/ECB/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CBC/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CBC/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CTR/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/GCM/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-1AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-224AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-384AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-512AndMGF1Padding
Android API level 31 (Android 12)
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-1AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-224AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-384AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-512AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CTR/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES_128/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES_256/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES_256/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: ARC4
Provider: AndroidOpenSSL, Algorithm: AES/GCM/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/GCM/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/GCM/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/GCM-SIV/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/GCM-SIV/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/GCM-SIV/NoPadding
Provider: AndroidOpenSSL, Algorithm: ChaCha20
Provider: AndroidOpenSSL, Algorithm: ChaCha20/Poly1305/NoPadding
Provider: BC, Algorithm: AES
Provider: BC, Algorithm: AESWRAP
Provider: BC, Algorithm: PBEWITHSHAAND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC4
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC4
Provider: BC, Algorithm: BLOWFISH
Provider: BC, Algorithm: DES
Provider: BC, Algorithm: PBEWITHMD5ANDDES
Provider: BC, Algorithm: PBEWITHSHA1ANDDES
Provider: BC, Algorithm: DESEDE
Provider: BC, Algorithm: DESEDEWRAP
Provider: BC, Algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHMD5ANDRC2
Provider: BC, Algorithm: PBEWITHSHA1ANDRC2
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAANDTWOFISH-CBC
Provider: BC, Algorithm: RSA
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/ECB/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CBC/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CBC/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CTR/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/GCM/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-1AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-224AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-384AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-512AndMGF1Padding
Android API level 33 (Android 13)
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPPadding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-1AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-224AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-384AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: RSA/ECB/OAEPWithSHA-512AndMGF1Padding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES/CTR/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES_128/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES_256/ECB/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/ECB/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: AES_256/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/NoPadding
Provider: AndroidOpenSSL, Algorithm: DESEDE/CBC/PKCS5Padding
Provider: AndroidOpenSSL, Algorithm: ARC4
Provider: AndroidOpenSSL, Algorithm: AES/GCM/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/GCM/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/GCM/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES/GCM-SIV/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_128/GCM-SIV/NoPadding
Provider: AndroidOpenSSL, Algorithm: AES_256/GCM-SIV/NoPadding
Provider: AndroidOpenSSL, Algorithm: ChaCha20
Provider: AndroidOpenSSL, Algorithm: ChaCha20/Poly1305/NoPadding
Provider: BC, Algorithm: AES
Provider: BC, Algorithm: AESWRAP
Provider: BC, Algorithm: PBEWITHSHAAND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHAAND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND128BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND192BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHSHA256AND256BITAES-CBC-BC
Provider: BC, Algorithm: PBEWITHMD5AND128BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND192BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHMD5AND256BITAES-CBC-OPENSSL
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC4
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC4
Provider: BC, Algorithm: BLOWFISH
Provider: BC, Algorithm: DES
Provider: BC, Algorithm: PBEWITHMD5ANDDES
Provider: BC, Algorithm: PBEWITHSHA1ANDDES
Provider: BC, Algorithm: DESEDE
Provider: BC, Algorithm: DESEDEWRAP
Provider: BC, Algorithm: PBEWITHSHAAND3-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHSHAAND2-KEYTRIPLEDES-CBC
Provider: BC, Algorithm: PBEWITHMD5ANDRC2
Provider: BC, Algorithm: PBEWITHSHA1ANDRC2
Provider: BC, Algorithm: PBEWITHSHAAND128BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAAND40BITRC2-CBC
Provider: BC, Algorithm: PBEWITHSHAANDTWOFISH-CBC
Provider: BC, Algorithm: RSA
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/ECB/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CBC/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CBC/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/CTR/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: DESede/CBC/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: DESede/CBC/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: DESede/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: DESede/ECB/PKCS7Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: AES/GCM/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/NoPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/PKCS1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPPadding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-1AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-224AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-256AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-384AndMGF1Padding
Provider: AndroidKeyStoreBCWorkaround, Algorithm: RSA/ECB/OAEPWithSHA-512AndMGF1Padding
Conclusion:
AES-CCM
method, the current encryption method of Joplin, is not supported injavax.crypto
on Android.
It means I cannot implement a compatible layer ofsjcl
to improve the decryption speed when migrating the crypto method of notes on Android.AES-GCM
method, which I chose as the new encryption method, has the built-in OpenSSL implementation since Android 6.0.
It means I can implementAES-GCM
method withjavax.crypto
library on Android. With this PR merged, the minimum Android SDK version requirement of Joplin is bumped to Android 6.0 so the OpenSSL implementation is always available on the Android client.