gpt4 book ai didi

c# - Android应用程序解密所需的IV存储在哪里?

转载 作者:行者123 更新时间:2023-11-30 00:03:51 25 4
gpt4 key购买 nike

我应该将 AES 解密所需的 IV(字节数组)存储在我的 Android 应用程序中的什么位置?我试过将它转换为 Base64 中的字符串并将其保存到共享首选项,但一直出现错误的填充异常。我尝试更改填充,但没有用。

我还将 IV(字节数组)保存到 keystore 的提供程序并且有效,但是在 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

最佳答案

I've tried converting it to a string in Base64 and saving it to shared preferences, but kept getting a bad padding exception.

将 IV 存储在 SharedPreferences 中应该可以。您可能遇到了 base64 编码问题。

I also saved the IV (byte array) to the keystore's provider and that worked, but while debugging in Visual Studio for Mac, the provider's content (in this case the IV) gets erased every time I run the app.

java.security.Provider 它不是存储字节数组的地方。你是说 Android Keystore Systemjava.security.KeyStore 的其他实现.请具体点

Where to store IV that is needed for decryption in Android app?

只需将初始化向量添加到密文中

 [IV][ciphertext]

关于c# - Android应用程序解密所需的IV存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49393983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com