KeyStore API AES 密钥生成 NoSuchAlgorithmException

KeyStore API AES Key Generation NoSuchAlgorithmException

我正在使用下面的代码生成 AES 密钥并将其存储到 Android 密钥库中:

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //redundant
            try {
                // generate some AES key for encryption
                KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
                keyPairGenerator.initialize(new KeyGenParameterSpec.Builder(
                        "VideoEncryptionKey",
                        KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
                        .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
                        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
                        .setRandomizedEncryptionRequired(false)
                        .build());
                keyPairGenerator.generateKeyPair();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

执行时,代码失败 java.security.NoSuchAlgorithmException: KeyPairGenerator AES implementation not found

该代码是使用 targetSdkVersion 23compileSdkVersion 25 构建的,并且是 运行 在带有 Android 6.0.1 的 Blackberry Priv 上,所以根据文档,应该有没有任何例外,因为 AES 算法需要 API 级别 23 或更高级别。

感谢任何帮助。

KeyPairGenerator 适用于使用密钥对(私钥和 public 密钥)的算法,例如 RSADSA.

对于 A​​ES 中的对称密钥,使用 KeyGenerator class.