如何修复此错误,我尝试cardnumber
仅加密,并且在添加expdate
时,我在创建xml文件时没有任何问题。它会提示错误,
到目前为止,这是我的代码:
cardnumber = cs_aes.Encrypt(cardnumber);
expdate = cs_aes.Encrypt(expdate);
XElement xml_request = new XElement("Request",
new XElement("Transaction",
new XElement("CardNumber", cardnumber),
new XElement("CardMember", cardmember),
new XElement("ExpDate", expdate),
new XElement("Amount", amount),
new XElement("Invoice", invoice),
new XElement("Zip", zip),
new XElement("Street", street),
new XElement("Security", security),
));
xml_request.Save(path here);
加密/解密代码
答案 0 :(得分:5)
您的GetString()方法已损坏。你不能将byte []存储在这样的字符串中。字符串中的字节值不任意,它们必须遵循规范化的utf-16编码字符串的规则。你可能很幸运,因为它在一个不好的代理价值上窒息,规范化也有随机破坏你的数据的习惯,而你却很容易发现它。
您可以使用Convert.ToBase64String()将byte []转换为字符串。
答案 1 :(得分:2)
正如预期的那样,代码通过将字节数组转换为char数组而不是字符串来将字节序列转换为字符串。
这是个坏主意,因为字节数组可能包含在许多期望有效字符串的上下文中无效/不可接受的序列:
处理字节数组/二进制数据的正确方法是按原样存储(如果存储格式允许)或编码(即建议使用XML base64编码)。