在Android 8中,KeyGenerator类的generateKey()方法中的算法参数已更改为KeyGenParameterSpec。因此,在使用generateKey()方法之前,需要使用KeyGenParameterSpec指定算法参数,例如AES、RSA等。以下是一个示例代码:
KeyGenerator keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, "AndroidKeyStore");
KeyGenParameterSpec keySpec = new KeyGenParameterSpec.Builder("MyKeyAlias", KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT) .setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) .setRandomizedEncryptionRequired(false) .build();
keyGenerator.init(keySpec);
SecretKey secretKey = keyGenerator.generateKey();
可以使用上面的代码来生成一个密钥,并使用该密钥进行加密和解密操作。这样就可以避免generateKey()方法导致应用程序崩溃的问题。