私は辞書を持っています。これを XML に変換し、SHA1 でハッシュします。
string xmlMessageCode = inputDictionary.ToXML(); //Extension method.
UnicodeEncoding UE = new UnicodeEncoding();
SHA1Managed hasher = SHA1Managed();
byte[] hashString = Encoding.UTF8.GetBytes(xmlMessageCode.ToCharArray());
byte[] hashCode = hasher.ComputeHash(hashString);
string computedHashString = UTF8Encoding.UTF8.GetString(hashCode);
return computedHashString;
その後、値をオブジェクト プロパティに入れ、これらのオブジェクトのコレクションを XML にシリアル化します。
XmlSerializer ser = new XmlSerializer(typeof(T));
XmlWriterSettings settings = new XmlWriterSettings()
{
Indent = false,
OmitXmlDecleration = false,
Encoding = Encoding.UTF8
};
using(StringWriter sr = new StringWriter)
{
using(XmlWriter xmlr = XmlWriter.Create(sr, settings))
{
ser.Serialize(sr, newList);
}
return sr.ToString();
}
これにより XML が生成されますが、結果の XML を検証しようとすると、ハッシュされた文字列から作成されたプロパティ内でエラーが発生します。
これを解決する最善の方法は何ですか?無効な文字を削除する必要がありますか、それともより洗練されたソリューションがありますか?