我在应用程序中使用指纹认证。它运行良好,但是启用setUserAuthenticationRequired时,我们只能调用一次doFinal()方法。但是我需要多次调用才能解密多个字符串。
我想使用指纹密钥来加密另一个密钥,而第二次使用它来加密我的数据。所以我可以多次调用doFinal()。如果可能的话,也可以将两个密钥都存储在AndroidKeyStore中。因此,当我需要解密我的数据时,我想通过指纹身份验证来检索第一密钥,然后使用第一密钥来检索第二密钥,最后使用第二密钥来解密我的所有数据。
但是如何创建由第一(指纹)密钥加密的第二密钥?可以在AndroidKeyStore中存储第二个密钥吗?
我用来创建指纹认证密钥的这段代码:
val keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, PROVIDER_ANDROID_KEYSTORE)
val builder = KeyGenParameterSpec.Builder("MyKeyAlias", KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.setUserAuthenticationRequired(true)
keyGenerator.init(builder.build())
keyGenerator.generateKey()