Шифрование и дешифрование объекта DataTable

#c# #.net

#c# #.net

Вопрос:

Мне нужна некоторая помощь в шифровании и расшифровке объекта DataTable.

Сценарий проблемы:

  • Шифрование всего содержимого объекта System.Data.DataTable.

Требуемые функции:

  • Использовать логику шифрования Triple DES
  • Следует преобразовать все содержимое или все ячейки для всех столбцов и / или строк

Пожалуйста, помогите.

Ответ №1:

Я бы хотел преобразовать в XML (DataSet.getXML), а затем выполнить шифрование этих XML-данных. Взгляните на систему.Безопасность.Пространство имен Cryptography (класс TripleDES). В этом случае расшифровка и преобразование вашего XML обратно в DataSet является тривиальной.

Ответ №2:

Я не уверен, что это лучший способ сделать это, но, похоже, это было бы просто перебирать строки и столбцы (т. Е. просто использовать цикл double for или foreach) и использовать это: http://msdn.microsoft.com/en-us/library/system.security.cryptography.tripledes.aspx для выполнения тройного DES. Этот код НЕ проверяется, но он должен выглядеть следующим образом:

  String fin = cell1.ToString();

//Create variables to help with read and write.
byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
long rdlen = 0;              //This is the total number of bytes written.
long totlen = fin.Length;    //This is the total length of the input file.
int len;                     //This is the number of bytes to be written at a time.

TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();          
CryptoStream encStream = new CryptoStream(cell1, tdes.CreateEncryptor(tdesKey, tdesIV), CryptoStreamMode.Write);

Console.WriteLine("Encrypting...");

//Read from the input file, then encrypt and write to the output file.
while(rdlen < totlen)
{
    len = fin.Read(bin, 0, 100);
    encStream.Write(bin, 0, len);
    rdlen = rdlen   len;
    Console.WriteLine("{0} bytes processed", rdlen);
}