我正在使用 C# 的 Rijndael AES 加密对字符串进行编码。我生成一个键和一个 IV,并使用它们对字符串和值进行编码,然后我可以将它们保存到磁盘(我正在使用 Unity3D 的 playerprefs)。
我面临的问题是 PlayerPrefs 键和值需要是有效的字符序列,并且编码的字节不一定有效。
因此,在用我的密钥和 IV 对我的字符串进行编码后,我得到一个字节数组,我可以用 Unicode 进行 enode,但是(有时)当我尝试保存它时,我收到一条错误消息:
byte[] encryptedBytes = Encode("someText", encryptionKey, initVector);
string encodedString = Encoding.Unicode.GetString(encryptedBytes);
PlayerPrefs.SetString("SecretData",encodedString);
PlayerPrefs.Save();
错误:
-1073752512 处的无效 utf-16 序列(缺少代理尾部)
有什么方法可以确保字符串的格式有效吗?