crittografia
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);
}
}
}
decrittografia:
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);
}
}
}
Usage:
DESCryptoServiceProvider key = new DESCryptoServiceProvider();
MyObject obj = new MyObject();
EncryptAndSerialize("testfile.xml", obj, key);
MyObject deobj = DecryptAndDeserialize("testfile.xml", key);
È necessario modificare MyObject a prescindere dal tipo del vostro oggetto è che si sta serializzazione, ma questo è l'idea generale. Il trucco è utilizzare la stessa istanza SymmetricAlgorithm per crittografare e decodificare.
fonte
2009-06-08 14:34:57
A proposito, sto usando il CF, quindi la memoria è un vincolo. – GenericTypeTea
Puoi elaborare? Vuoi criptare qualcosa e poi serializzarlo nel formato XML, o vuoi criptare i dati serializzati? –
Qualunque sia il tempo che richiede meno tempo. Ho una raccolta di informazioni sui clienti che devono essere crittografate su un file. Il modo in cui l'ho visto funzionare era serializzare attraverso un cryptostream in un file (che funziona) e quindi deserializzare attraverso un cryptostream da un file (che non funziona). – GenericTypeTea