1) Для сериализации:
</p>
<pre><code> public String SerializeObject(TestObj object)
{
String Serialized = String.Empty;
MemoryStream memoryStream = new MemoryStream ( );
XmlSerializer xs = new XmlSerializer(typeof(TestObj));
XmlTextWriter xmlTextWriter = new XmlTextWriter ( memoryStream, Encoding.UTF8 );
xs.Serialize (xmlTextWriter, object);
memoryStream = (MemoryStream) xmlTextWriter.BaseStream;
Serialized = UTF8Encoding.GetString(memoryStream.ToArray());
return Serialized;
}
2) Для предотвращения взлома:
- Придумайте секретную строку, например, "MySecretWord".
- Возьмите экземпляр сериализованного объекта в виде строки и добавьте к нему секретное слово.
- Хешируйте строку (например, SHA или используйте HMAC (как предложено Remus) )
- Добавить хеш к строке запроса
На принимающей стороне (которая также знает вашу секретную строку «MySecretWord») вы удаляете хеш, берете оригинальный сериализованный экземпляр, добавляете известную секретную строку и снова хешируете ее. Затем сравните два хеша для равенства. Если они равны, ваша строка не была изменена.
Возможно, вам понадобится Url / Base64 Encode вашей строки, чтобы она работала как строка запроса. Это также важно, так как вам нужно, чтобы строка запроса прибыла точно так, как отправлено.