10

シリアル化されたデータをファイルに暗号化し、DES を使用して読み戻す方法の例はありますか?

動作しないコードを既に書いていますが、自分のコードを追求するのではなく、新しい試みを見たいと思っています。

編集:申し訳ありませんが、XmlSerializer.Serialize/Deserializeを使用した例が必要であることを忘れていました。

4

3 に答える 3

19

暗号化

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); 
        }
    }
}

復号化:

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);
        }
    }
}

使用法:

DESCryptoServiceProvider key = new DESCryptoServiceProvider();
MyObject obj = new MyObject();
EncryptAndSerialize("testfile.xml", obj, key);
MyObject deobj = DecryptAndDeserialize("testfile.xml", key);

MyObject をシリアル化するオブジェクトのタイプに変更する必要がありますが、これが一般的な考え方です。秘訣は、同じ SymmetricAlgorithm インスタンスを使用して暗号化と復号化を行うことです。

于 2009-06-08T14:34:57.703 に答える