0

我正在使用 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 序列(缺少代理尾部)

有什么方法可以确保字符串的格式有效吗?

4

1 回答 1

2

encrypt 函数返回的字节与随机无法区分,并且可能不包含有效的字符编码。要将结果转换为字符串(如果需要),您可以使用 base 64。

于 2013-06-07T19:36:30.443 回答