2012-05-10 2 views
3

XML 데이터를 암호화 된 파일에 작성해야합니다. 암호화 된 파일을 읽고 쓸 수는 있지만 파일 입력 부분을 건너 뛰고 MemoryStream 객체에서 수행하는 방법을 알아내는 데 문제가 있습니다.암호화 된 파일에 XML을 쓰려면 어떻게해야합니까?

이것은 내가 지금까지 가지고있는 것입니다. 기본적으로 Byte []를 사용하여 표준 암호화를 수행해야합니다.

멋진 입력에 감사드립니다. 나는 이것을 곧 시험 할 것이다.

편집 : 테스트 후 memorystream 개체를 닫을 때 "닫힌 스트림에 액세스 할 수 없습니다."예외가 발생합니다.

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

감사합니다. 지금 memorystream을 사용 중입니다. – kevp

+0

감사합니다. 내 두 번째 오류는 잘못된 순서로 개체를 닫는 것입니다. – kevp

1

생성자에서 아무것도 필요 StreamWriter를 같은 건 없다. 실제 대상 스트림을 대상으로하는 CryptoStream에 기록하십시오.

편집 : "내 표준 암호화"라고 말하면됩니다. 표준 .NET 암호화를 사용하고 있습니까? 아니면 사용자 지정 알고리즘으로 자체 알고리즘을 롤백 했습니까? 이 솔루션은 ICryptoTransform 구현으로 수정 한 경우 종속성이있을 수 있습니다.

+0

내가 뭘 하려는지 게시했습니다. 나는 학교에서 새로워졌고, 이것이 우리에게 과제에서 사용하도록 가르쳐 준 것입니다. 더 좋은 방법이 있다면 나는 놀라지 않을 것이다. 그러나 나는 노력하고있다. – kevp

관련 문제