我应该在哪里存储我的 Android 应用程序中 AES 解密所需的 IV(字节数组)?我尝试将其转换为 Base64 中的字符串并将其保存到共享首选项,但一直收到错误的填充异常。我试图改变填充,但没有奏效。
我还将 IV(字节数组)保存到了密钥库的提供程序,并且工作正常,但是在 Visual Studio for Mac 中进行调试时,每次运行应用程序时,提供程序的内容(在本例中为 IV)都会被删除。提供者仍然存在,但提供者中没有保存任何内容。Android 的文档说“每个提供程序……都在它安装的每个运行时中进行配置。” 一旦应用程序安装在实际设备上,这会是一个问题吗?
我在 Visual Studio for Mac 中用 c# 编码。
编辑
这是我使用 Base64 编码的代码:
字符串 ivString = Base64.EncodeToString(ivByteArray, Base64Flags.Default);
byte[] decodedIV = Base64.Decode(ivString, Base64Flags.Default);
当我打印出原始字节数组和解码后的字节数组时,它们完全相同,但我不断收到错误的填充异常
我正在使用 AES、CBC 和 EncryptionPaddingPkcs7