【发布时间】:2016-09-23 00:12:18
【问题描述】:
在我的应用程序中,我有以下代码用于将某些数据加密为字符串:
private string EncryptPermission(User user)
{
Encoding encoding = Encoding.ASCII;
Cryptography cryptography = CreateCryptography(user);
byte[] val = encoding.GetBytes(user.Permission.ToString());
byte[] encrypted = cryptography.Encrypt(val);
string result = encoding.GetString(encrypted);
return result;
}
这就像我想要的那样。现在我想将该数据写入一个 xml 文件,例如:
internal void WriteUser(User user)
{
XElement userElement = new XElement("user",
new XAttribute("id", user.UserId.ToString("N")),
new XElement("name", user.Username),
new XElement("password", user.Password),
new XElement("permission", EncryptPermission(user)));
XDocument document = GetDocument();
if (document.Root != null)
{
document.Root.Add(userElement);
SaveDocument(document);
}
}
目前我打电话给SaveDocument 我得到一个Exception 喜欢:
发生“System.ArgumentException”类型的第一次机会异常 在 System.Xml.dll 中
附加信息:'',十六进制值0x06,是一个 无效字符。
(从德语翻译)
我该如何解决这个问题?我已经尝试过使用Converter.ToBase64String(..) 和Converter.FromBase64String(..),但是我得到了一个例外,即数据太长。
【问题讨论】:
-
return Convert.ToBase64String(cryptography.Encrypt(val))在您的编码方法中将返回一个对 XML 安全的值。
标签: c# xml encryption