C # Шифрование объекта в файл XML - PullRequest
0 голосов
/ 19 октября 2011

Я пытаюсь создать файл лицензии, и мне нужно, чтобы он был зашифрован.

У меня есть License объект и List<License>licenses. Мне нужно зашифровать поток перед сохранением его в XML-файл, чтобы его было трудно прочитать.

Я нашел этот пост: Код MSDN: запись данных класса в файл XML (Visual C #)

public class Book
{
   public string title;

   static void Main()
   {
      Book introToVCS = new Book();
      introToVCS.title = "Intro to Visual CSharp";
      System.Xml.Serialization.XmlSerializer writer = 
         new System.Xml.Serialization.XmlSerializer(introToVCS.GetType());
      System.IO.StreamWriter file =
         new System.IO.StreamWriter("c:\\IntroToVCS.xml");

      writer.Serialize(file, introToVCS);
      file.Close();
   }
}

И этот пост: CodeProject: Использование CryptoStream в C #

Запись xml-файла:

FileStream stream = new FileStream(�C:\\test.txt�, 
         FileMode.OpenOrCreate,FileAccess.Write);

DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();

cryptic.Key = ASCIIEncoding.ASCII.GetBytes(�ABCDEFGH�);
cryptic.IV = ASCIIEncoding.ASCII.GetBytes(�ABCDEFGH�);

CryptoStream crStream = new CryptoStream(stream,
   cryptic.CreateEncryptor(),CryptoStreamMode.Write);


byte[] data = ASCIIEncoding.ASCII.GetBytes(�Hello World!�);

crStream.Write(data,0,data.Length);

crStream.Close();
stream.Close();

Чтение XML-файла:

FileStream stream = new FileStream(�C:\\test.txt�, 
                              FileMode.Open,FileAccess.Read);

DESCryptoServiceProvider cryptic = new DESCryptoServiceProvider();

cryptic.Key = ASCIIEncoding.ASCII.GetBytes(�ABCDEFGH�);
cryptic.IV = ASCIIEncoding.ASCII.GetBytes(�ABCDEFGH�);

CryptoStream crStream = new CryptoStream(stream,
    cryptic.CreateDecryptor(),CryptoStreamMode.Read);

StreamReader reader = new StreamReader(crStream);

string data = reader.ReadToEnd();

reader.Close();
stream.Close();

Я с трудом пытаюсь объединить их. Может ли кто-нибудь помочь мне здесь?

1 Ответ

3 голосов
/ 19 октября 2011

На самом деле, вам следует рассмотреть возможность использования класса EncryptedXml . Вместо того, чтобы шифровать сам XML, вы шифруете содержимое XML.

Шифрование может повлечь за собой различные подходы к надежности криптографии, основам ключей и т. Д. Следуйте примерам в документации MSDN. Это не короткая реализация, но она работает очень хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...