分别加密2个数据并通过C#中的Rijndael导出为一个文件

时间:2009-12-14 23:20:37

标签: c# encryption rijndaelmanaged

有2个按钮可以生成2个数据。我需要实现的是单独加密它们并导出到同一个文件。然后我需要能够在以后解密它。

是否可以使用CBC模式?使用相同的流来加密第一个数据的最后一个块的第二个数据的第一个块? (避免IV)

或者

我可以在ECB模式下执行此操作吗?如果有人可以详细说明这一点会很好。

1 个答案:

答案 0 :(得分:1)

您始终可以将这两个值存储为文件的单独属性。

[Serializable]
public class EncryptedValues
{
    public string Value1 { get; set; }
    public string Value2 { get; set; }

    public static EncryptedValues FromXml(string xmlString)
    {
        if (!string.IsNullOrEmpty(xmlString))
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(EncryptedValues));
            using (MemoryStream memoryStream = new MemoryStream())
            {
                using (StreamWriter streamWriter = new StreamWriter(memoryStream))
                {
                    streamWriter.Write(xmlString);
                    streamWriter.Flush();
                    memoryStream.Flush();
                    memoryStream.Position = 0;

                    return (xmlSerializer.Deserialize(memoryStream) as EncryptedValues);
                }
            }
        }

        return null;
    }

    public string ToXml()
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(EncryptedValues));

        using (MemoryStream memoryStream = new MemoryStream())
        {
            using (StreamWriter streamWriter = new StreamWriter(memoryStream))
            {
                xmlSerializer.Serialize(streamWriter, o);
                streamWriter.Flush();
                memoryStream.Flush();
                memoryStream.Position = 0;

                using (StreamReader streamReader = new StreamReader(memoryStream))
                {
                    return streamReader.ReadToEnd();
                }
            }
        }
    }

}