我正在加密一些文本并尝试对其进行解密,但是当我使用不同的 AeadConfig.register() 进行解密而不是加密时,它无法解密。我想知道如何解决这个问题,因为我将在一个活动中加密并在另一个活动中解密。为了在下面给出一个例子,我已经简化了它。
如果我只是将 aead 作为参数传递,这是可行的,但我不确定这是否是我应该做的事情。
private fun deletableEncrypt() {
AeadConfig.register()
val keysetHandle: KeysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM)
val aead: Aead = AeadFactory.getPrimitive(keysetHandle)
val plainText = "Hello world"
val aad = "masterpassword"
val cipherText = aead.encrypt(plainText.toByteArray(), aad.toByteArray())
Log.d(TAG, cipherText.toString())
dbHelper.insertNewRow("text", cipherText,
"moreText")
}
private fun deleteableDecrypt() {
AeadConfig.register()
val keysetHandle: KeysetHandle = KeysetHandle.generateNew(AeadKeyTemplates.AES128_GCM)
val aead: Aead = AeadFactory.getPrimitive(keysetHandle)
val aad = "masterpassword"
val cipherText = dbHelper.getAllEncrypts()[0]
val decrypted = aead.decrypt(cipherText, aad.toByteArray())
}
现在解密会引发异常。我认为它是由aeadConfig引起的,但我不知道如何只注册一次,所以一旦解决了它就不会再抛出异常了。