2012-08-13 4 views
1

두 개의 데이터베이스에 연결하는 winforms 응용 프로그램이 있습니다. 그러나 사용자가 인터넷에 연결되어 있지 않아도 앱을 사용하고 싶습니다. 필자는 XML 파일에 로컬로 데이터 세트를 작성하고 사용자 환경 설정을 기반으로 데이터베이스에서 다운로드하거나 로컬 데이터 파일을 사용할지 여부를 기준으로 데이터 세트를 읽었습니다. 데이터 집합에서 XML 파일 암호화

DataSet.WriteXml(localPath) 

응용 프로그램이 개선되고, 나는 내부보고에서 사용자를 방지하기 위해 XML 파일을 암호화하고 싶은

은 (거기에 데이터의 무리가 있지만 응용 프로그램은 선택적으로 사용자에게 할당 된 액세스 수준에 따라 데이터를 표시). 'Rijndael Managed'를 조사한 결과 Encrypt/Decrypt Files in VB.NET을 기반으로 한 프로토 타입을 만들었습니다. 디스크에 저장하지 않고 스트림에서 암호화 클래스로 전달하는 방법을 파악할 수 없었습니다.

지금 당장은 xml 파일을 임시 디렉토리에 저장하고 새로운 스트림을 생성 한 다음 CrypotoStream에 전달하여 암호화 된 파일을 원하는 위치에 씁니다.

나는 직접 디스크에 쓰지 않고 스트림을 직접 전달할 수있는 솔루션을 찾고 있습니다. 제발 제안 해주세요.

+0

해독이 같은 참조하십시오. 이를 사용하여 MemoryStream에 기록한 다음 스트림을 암호화 클래스에 공급하십시오. RjindaelManged는 특정 환경에서 보안 경고를 생성하므로 AesManaged를 대신 사용해서는 안됩니다. – JamieSee

답변

2

EncryptedXml 클래스 MSDN 설명서의 예제를 따라 등의 암호화 강도, 키 기지에 대한 다른 접근을 수반 할 수

EncryptedXml Class 암호화 것이다 사용하는 더 나은 것. 이것은 짧은 구현은 아니지만 매우 잘 작동합니다.

다른 대안

쓰기 MemoryStream을로와) (MemoryStream.ToArray를 사용;

그냥 데이터 집합을로드시키는 CryptoStream을 사용하여 암호화 된 스트림

를 읽을 수 있습니다.

읽기/스트림을 필요 DataSet.WriteXml의 한 형태가있다 Read/decrypt encrypted XML file and then process internally