如何在由另一个密钥加密的AndroidKeyStore中生成密钥?

时间:2019-05-24 11:12:29

标签: android encryption kotlin android-keystore

我在应用程序中使用指纹认证。它运行良好,但是启用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()

0 个答案:

没有答案