我正在为Android 6及更高版本的设备生成一些用于加密/解密目的的非对称密钥对。
为此,我使用了以下代码。
KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(asymmetricKeyGenerationAlogritham, keyStoreProvider);
keyPairGenerator.initialize(
new KeyGenParameterSpec.Builder(
alias,
KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
.setEncryptionPaddings(asymmetricKeyGenerationPadding)
.setKeySize(asymmetricKeySize)
.setDigests(KeyProperties.DIGEST_SHA256, KeyProperties.DIGEST_SHA512)
.setUserAuthenticationRequired(isFingerprintAuthNeeded)
.setUserAuthenticationValidityDurationSeconds(userAuthneticationDuration)
.build());
keyPairGenerator.generateKeyPair();
完成手动测试后,我看到密钥是为特定别名生成的。
当我进行单元测试时,出现以下错误:
"java.security.NoSuchProviderException: no such provider: AndroidKeyStore"
但是手动,这是完美的。
我在做什么错?请纠正我。