AndroidKeysetManager生成器与HybridKeyTemplates一起崩溃
我有安卓密码,可以加密/解密数据。它是一年多前由另一个开发人员编写的(他后来离开了),一直工作得很好,直到最近,它开始崩溃,只有以下例外:AndroidKeysetManager生成器与HybridKeyTemplates一起崩溃,android,cryptography,tink,Android,Cryptography,Tink,我有安卓密码,可以加密/解密数据。它是一年多前由另一个开发人员编写的(他后来离开了),一直工作得很好,直到最近,它开始崩溃,只有以下例外: android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to javax.crypto.SecretKey 只有在升级应用程序且现有密钥已存在时,才会出现这种情况。我将gradle文件与之前的版本(有效)进行了比较,没有更新任何框架/SDK 异常发生在.build()中:
android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to javax.crypto.SecretKey
只有在升级应用程序且现有密钥已存在时,才会出现这种情况。我将gradle文件与之前的版本(有效)进行了比较,没有更新任何框架/SDK
异常发生在.build()中:
我将代码追溯到androidkeystreaesgcm
,从getKey返回的赋值出现异常(成功):
这使我无法确定如何进行。密钥库有一个密钥,我需要它来访问应用程序数据。我怀疑我的宿敌格拉德尔应该受到责备,但是。。。嗯,任何帮助或见解都将不胜感激
private fun getOrGenerateNewKeysetHandle(alias: String): KeysetHandle {
val keysetName = "${TINK_KEYSET_NAME}_$alias"
return AndroidKeysetManager.Builder()
.withSharedPref(reactApplicationContext, keysetName, PREF_FILE_NAME)
.withKeyTemplate(HybridKeyTemplates.ECIES_P256_HKDF_HMAC_SHA256_AES128_GCM)
.withMasterKeyUri(MASTER_KEY_URI)
.build()
.keysetHandle
}
public AndroidKeystoreAesGcm(String keyId) throws GeneralSecurityException, IOException {
KeyStore keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null /* param */);
key = (SecretKey) keyStore.getKey(keyId, null /* password */);
}