C# - 序列化/从流反序列化DES加密文件 [英] C# - Serializing/Deserializing a DES encrypted file from a stream

查看:553
本文介绍了C# - 序列化/从流反序列化DES加密文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有人对如何序列化的数据加密到一个文件中的任何实例,然后读回用DES?

Does anyone have any examples of how to encrypt serialized data to a file and then read it back using DES?

我已经写了一些代码已经是ISN :T工作,但我宁愿看到一个新鲜的尝试,而不是追求我的代码

I've written some code already that isn't working, but I'd rather see a fresh attempt instead of pursuing my code.

修改:对不起,忘了提,我需要一个例如使用XmlSerializer.Serialize /反序列化。

EDIT: Sorry, forgot to mention I need an example using XmlSerializer.Serialize/Deserialize.

推荐答案

加密

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



用法:

Usage:

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

您需要更改为MyObject来无论你的对象的类型是你序列化,但这是的总体思路。诀窍是使用相同的SymmetricAlgorithm实例来加密和解密。

You need to change MyObject to whatever the type of your object is that you are serializing, but this is the general idea. The trick is to use the same SymmetricAlgorithm instance to encrypt and decrypt.

这篇关于C# - 序列化/从流反序列化DES加密文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆