2012-05-10 4 views
3

Мне нужно записать данные XML в зашифрованный файл. Я могу читать/писать зашифрованные файлы, но мне трудно понять, как пропустить часть ввода файла и сделать это из объекта MemoryStream.Как написать XML в зашифрованный файл?

Это то, что у меня есть до сих пор. В принципе, мне просто нужно получить Byte [], чтобы закрепить мое стандартное шифрование.

Я ценю потрясающий вход. Я скоро проверю это.

EDIT: после тестирования я получаю исключение «Не могу получить доступ к закрытому потоку», когда я пытаюсь закрыть объект memystream.

MemoryStream ms = new MemoryStream(); 
XmlTextWriter xmlwriter = new XmlTextWriter(ms,Encoding.ASCII); 
FileStream EncryptedFileStream = new FileStream(file, FileMode.Create, FileAccess.Write); 

DESCryptoServiceProvider DES = new DESCryptoServiceProvider(); 
DES.Key = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA"); 
DES.IV = ASCIIEncoding.ASCII.GetBytes("AAAAAAAA"); 

ICryptoTransform desEncrypt = DES.CreateEncryptor(); 
CryptoStream cryptostream = new CryptoStream(EncryptedFileStream, desEncrypt, CryptoStreamMode.Write); 

//create xml document 

byte[] bytearray = new byte[ms.Length]; 
ms.Read(bytearray, 0, bytearray.Length); 

cryptostream.Write(bytearray, 0, bytearray.Length); 

cryptostream.Close(); 
ms.Close(); 
EncryptedFileStream.Close(); 

ответ

2

Запись в MemoryStream и использовать MemoryStream.ToArray()

+0

Спасибо, я использую memystream сейчас – kevp

+0

Понял, спасибо. Моя вторая ошибка заключалась в закрытии объектов в неправильном порядке. – kevp

1

Там нет такого понятия, как StreamWriter, который принимает ни в чем в конструкторе. Пишите в CryptoStream, у которого есть реальный целевой поток в качестве цели.

Редактировать: Вы говорите «Мое стандартное шифрование». Используете ли вы стандартное .NET-шифрование или откатываете свой собственный алгоритм с помощью специального метода? Это решение может зависеть от того, как вы переработаете его в реализацию ICryptoTransform.

+0

Я отправил то, что я пытаюсь сделать. Я свежусь из школы, и это то, чему они научили нас использовать в задании. Я не удивлюсь, если будет лучший способ, но я пытаюсь. – kevp

Смежные вопросы