小编pot*_*ane的帖子

Android - javax.crypto.AEADBadTagException

我当前在尝试解密已加密的文件时收到 AEADBadTagException。我在 stackoverflow 上搜索了几乎所有地方,但无法找到解决方案,并希望这只是我犯的一个小错误或与编码等有关,因为 GCM 无法验证它正在生成的标签。

\n\n

我相信问题出在我尝试加密/解密的文件中的某个地方。同样的代码适用于图像,但是,当我尝试加密 PDF 时,它失败并给出上述错误。

\n\n

下面的代码没有使用 CipherOutputStream/CipherInputStream,但我已经尝试过两者但没有运气。

\n\n

我知道加密/解密方法不应该这样编写,特别是对于硬编码的 IV,但现在我只是想让它工作,然后稍后正确保护这些方法。

\n\n

我正在使用 Android KeyStore 来获取我的密钥。我知道这部分是有效的,因为我在应用程序中有很多其他部分使用相同的方法使用密钥库。另外,此方法适用于图像。

\n\n

该错误发生在 cipher.doFinal(encryptedBytes) 上。当我使用 CipherInputStream 时,它发生在 CipherInputStream(EncryptedFileStream, cipher) 上

\n\n

这是代码以及错误堆栈,非常感谢任何帮助:

\n\n

加密

\n\n
        val fileBytes = inputStream.readBytes()\n        val cipher = Cipher.getInstance("AES/GCM/NoPadding")\n        keyStoreService.checkKeyAndCreate(ALIAS_FILE_KEY)\n        val key = keyStoreService.getFileKey(ALIAS_FILE_KEY)\n        val iv = byteArrayOf(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)\n        cipher.init(Cipher.ENCRYPT_MODE, key, GCMParameterSpec(128, iv))\n        val encryptedBytes = cipher.doFinal(fileBytes)\n        outputStream = FileOutputStream(file)\n        outputStream.write(encryptedBytes)\n        outputStream.flush()\n        inputStream.close()\n        outputStream.close()\n
Run Code Online (Sandbox Code Playgroud)\n\n

解密 …

encryption android cryptography aes-gcm kotlin

9
推荐指数
1
解决办法
1万
查看次数

Jinja2从父目录导入

我有一个文本文件,我正在使用类似的东西

{% import '/macros/macro.macro' as macro with context %}
Run Code Online (Sandbox Code Playgroud)

但是,我想从父目录中的文件夹导入宏.不知道如何处理这个问题.我尝试过使用〜和..但没有成功.有什么建议?

谢谢

jinja2

5
推荐指数
0
解决办法
355
查看次数

标签 统计

aes-gcm ×1

android ×1

cryptography ×1

encryption ×1

jinja2 ×1

kotlin ×1