Android 我可以从具有已知别名的受密码(我不知道)保护的密钥库中获取密钥吗
我对安卓密钥库不是很熟悉。在我的项目中,我包含了以前创建的受密码保护的自定义密钥库,我需要从中提取项目中具有已知别名的密钥。我不想修改密钥或不想创建任何密钥。可能吗?我需要一些关于android密钥库的澄清。请帮助我了解这方面的情况。是的。您可以使用密钥别名获取密钥 看看这个代码 密钥存储仅用于保存加密密钥,不要在那里保存密码Android 我可以从具有已知别名的受密码(我不知道)保护的密钥库中获取密钥吗,android,android-keystore,Android,Android Keystore,我对安卓密钥库不是很熟悉。在我的项目中,我包含了以前创建的受密码保护的自定义密钥库,我需要从中提取项目中具有已知别名的密钥。我不想修改密钥或不想创建任何密钥。可能吗?我需要一些关于android密钥库的澄清。请帮助我了解这方面的情况。是的。您可以使用密钥别名获取密钥 看看这个代码 密钥存储仅用于保存加密密钥,不要在那里保存密码 private fun init() { keyStore = KeyStore.getInstance(AndroidKeyStore) keySto
private fun init() {
keyStore = KeyStore.getInstance(AndroidKeyStore)
keyStore.load(null)
if (!keyStore.containsAlias(KEY_ALIAS)) {
val keyGenerator: KeyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, AndroidKeyStore)
keyGenerator.init(
KeyGenParameterSpec.Builder(KEY_ALIAS, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
.setBlockModes(KeyProperties.BLOCK_MODE_GCM)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
.build())
keyGenerator.generateKey()
}
}
override fun encrypt(byteArray: ByteArray): ByteArray {
val keyStoreKey = keyStore.getKey(KEY_ALIAS, null)
val cipher = Cipher.getInstance(AES_MODE)
cipher.init(Cipher.ENCRYPT_MODE, keyStoreKey)
val encodedBytes = cipher.doFinal(byteArray)
val params = cipher.parameters
val iv = params.getParameterSpec(GCMParameterSpec::class.java).iv
saveIv(iv)
return encodedBytes
}
override fun decrypt(byteArray: ByteArray): ByteArray {
val iv = getIv()
val ivSpec = GCMParameterSpec(128, iv)
val keyStoreKey = keyStore.getKey(KEY_ALIAS, null) as SecretKey
val cipher = Cipher.getInstance(AES_MODE)
cipher.init(Cipher.DECRYPT_MODE, keyStoreKey, ivSpec)
return cipher.doFinal(byteArray)
}
这是我对android API级别>=23的加密和解密
对于18>=API级别,您误解了我的问题,密钥库已经在某个地方创建并由密码保护。我只想得到一个已知别名的密钥。就这样。在那里读。您需要保存用于访问密钥库的密钥。