Зашифруйте 2 фрагмента данных отдельно и экспортируйте как один файл через Rijndael в C # - PullRequest
0 голосов
/ 15 декабря 2009

Есть 2 кнопки, которые будут генерировать 2 части данных. Чего мне нужно добиться, так это зашифровать их отдельно и экспортировать в один и тот же файл. Тогда мне нужно будет расшифровать его позже.

Можно ли использовать режим CBC? Используя тот же поток для шифрования 1-го блока 2-го фрагмента данных последним блоком 1-го фрагмента данных? (Чтобы избежать IV)

Или

Я могу сделать это в режиме ECB? Было бы хорошо, если бы кто-то мог уточнить это.

1 Ответ

1 голос
/ 15 декабря 2009

Вы всегда можете сохранить два значения как отдельные свойства файла.

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

}
...