【发布时间】:2014-08-31 05:18:28
【问题描述】:
我正在使用 .net XML 序列化程序将对象序列化为 XML 字符串。该对象包含一个字符串类型的属性,其内容是一个加密 字符串。加密是使用 .net 提供的 Rijndael 算法完成的,调用如下:
var encryptedArr = EncryptStringToBytes(plainText, RijndaelKey, RijndaelIv);
return Encoding.Default.GetString(encryptedArr);
虽然序列化没问题,但问题在于尝试反序列化时。序列化程序抛出一个异常说
"XML 文档中存在错误 (1,1130)。' ',十六进制值 0x02,是一个无效字符。线...”
问题是这些字符是我理解的加密过程的结果,所以我猜想弄乱加密字符串以使其与 XML 兼容不是一种选择。我还尝试对上述代码中的输出字符串进行不同的编码: UTF-8、Base64(抛出异常,说明字符串与 base64 不兼容)等。
我已经研究了很长时间了。你有什么推荐的?
【问题讨论】:
-
看看这篇关于序列化包含无效字符的对象的 SO 帖子stackoverflow.com/questions/1165966/… 也许一些关于您的序列化和反序列化函数的代码会有所帮助......所以我们可以看到您正在使用的类和技术.如果我们不知道您正在使用的类,那么给您设置方法或属性是没有意义的。
标签: c# xml serialization encryption