2011-12-28 2 views
-1

내가 현재 작업하고있는 프로그램은 현재 상태의 스냅 샷을 xml 파일에 저장합니다. XML 대신 blob로 데이터베이스에 저장하고 싶습니다.문자열을 다른 문자열로 압축하고 암호화하는 방법은 무엇입니까?

첫째, XML 파일은 공간을 많이 차지하고 중복되므로 처음에는 데이터베이스에 저장하기 전에 문자열을 압축해야한다고 생각합니다. 또한 단순한 암호를 사용하여 사람들이 적어도 단순한 키/암호 없이는 의미가 무엇인지 파악할 수 없도록하는 것이 좋습니다.

데이터베이스에 BLOB 형식으로 저장하려고합니다. 따라서 zip 파일을 압축하면 암호화되지 않습니다.

어떻게해야합니까?

+1

정말로 "compress C#"및 "encrypt C#"를 검색해도 필요한 것을 얻을 수 없습니까? – ripper234

+0

이것은 http://stackoverflow.com/questions/1089150/net-compression-of-xml-to-store-in-sql-server-database의 복제본입니까? –

+0

@ ripper234 대부분 파일 압축과 암호화가있어 데이터베이스에 저장하기가 어렵습니다. –

답변

1

XML 데이터를 DeflateStream으로 압축하고 출력을 MemoryStream에 씁니다. 그런 다음 .ToArray() 메서드를 호출하여 BLOB 데이터를 가져옵니다. 물론 .NET과 비슷한 방식으로 암호화를 수행 할 수도 있습니다 (압축 후). 수축이 공간을 절약하기에 충분하지 않다고 생각되면이 라이브러리를 사용해보십시오 : XWRT.

1

먼저 직렬화 메커니즘을 살펴보십시오. XML의 핵심은 사람이 읽을 수 있다는 것입니다. 그게 더 이상 중요한 목표가 아니라면 데이터베이스 저장에 더 적합한 다른 직렬화 기술을 살펴볼 시간이 될 것입니다. (바이너리로 압축하면 XML의 요점을 완전히 없앨 수 있습니다 :)

대체 형식으로, BSON 좋은 선택이 될 수 있습니다.

+0

나는 귀하의 분석에 동의하지 않습니다. 응용 프로그램의 비즈니스 로직을 테스트 할 때 XML을 읽을 수 있습니다. 해독 및 압축 해제 후에도 XML을 가로 챌 수 있습니다. * XML을 선호하는 인수 중 하나는 * 사람이 읽을 수있는 데이터가 전송 또는 저장 중에 너무 많은 공간을 차지하지 않도록 압축 할 수 있다는 것입니다. –

+0

@owlstead 공정한 점이지만, OP는 사람이 읽을 필요가있는 데이터와 압축 된 XML이 항상 바이너리 데이터보다 크다는 점을 언급하지 않았습니다. 그러나 진정한 요점은 중요하다는 것입니다 주어진 시나리오에서 사용자의 요구에 가장 적합한 저장 형식을 신중하게 고려하십시오. 어떤 경우에는 더 나은 대안이있을 때 많은 사람들이 XML로 기본 설정하는 것처럼 보입니다. – MattDavey

+0

다른 한편으로, OP는 이미 XML을 가지고 있기 때문에 전환해야한다면 직렬화를 다시 작성해야합니다. OP가 결론을 내 렸습니다. 압축과 암호화가 그의 모델에 맞지 않을 것이라고 결론지었습니다. 왜냐하면 그가 blob을 원하기 때문입니다. 그러나 그것은 OP가 인수없이 도달 한 매우 이상한 결론입니다. –

관련 문제