Encryption
public static void EncryptAndSerialize(string filename, MyObject obj, SymmetricAlgorithm key)
{
using(FileStream fs = File.Open(filename, FileMode.Create))
{
using(CryptoStream cs = new CryptoStream(fs, key.CreateEncryptor(), CryptoStreamMode.Write))
{
XmlSerializer xmlser = new XmlSerializer(typeof(MyObject));
xmlser.Serialize(cs, obj);
}
}
}
Decryption:
public static MyObject DecryptAndDeserialize(string filename, SymmetricAlgorithm key)
{
using(FileStream fs = File.Open(filename, FileMode.Open))
{
using(CryptoStream cs = new CryptoStream(fs, key.CreateDecryptor(), CryptoStreamMode.Read))
{
XmlSerializer xmlser = new XmlSerializer(typeof(MyObject));
return (MyObject) xmlser.Deserialize(cs);
}
}
}
Verbrauch:
DESCryptoServiceProvider key = new DESCryptoServiceProvider();
MyObject obj = new MyObject();
EncryptAndSerialize("testfile.xml", obj, key);
MyObject deobj = DecryptAndDeserialize("testfile.xml", key);
Sie müssen MyObject, was auch immer die Art des Objekts zu ändern, ist, dass Sie die Serialisierung, aber das ist die allgemeine Idee. Der Trick besteht darin, dieselbe SymmetricAlgorithm-Instanz zum Verschlüsseln und Entschlüsseln zu verwenden.
Übrigens benutze ich die CF, so Speicher ist eine Einschränkung. – GenericTypeTea
Können Sie es ausarbeiten? Möchten Sie etwas verschlüsseln und anschließend in das XML-Format serialisieren oder möchten Sie die serialisierten Daten verschlüsseln? –
Welcher ist weniger zeitaufwendig. Ich habe eine Sammlung von Kundeninformationen, die zu einer Datei verschlüsselt werden müssen. Die Art, wie ich es funktionierte, bestand darin, durch einen Kryptostream in eine Datei zu serialisieren (was funktioniert) und dann durch einen Kryptostream aus einer Datei zu deserialisieren (was nicht funktioniert). – GenericTypeTea