2017-01-11 3 views
-3

암호화 및 압축 방법이있는 패키지가 필요합니다.C#의 (스트림) 파일 압축 및 암호화 (AES 256)

대용량 스트림을 올바르게 압축/압축 해제 및 암호화 해제합니다.

+0

먼저 압축하여 압축 한 다음 AES로 암호화하십시오. – zaph

+0

적절하게 암호화 된 데이터는 무작위 데이터와 구별 할 수 없으며 압축은 크기를 줄이기 위해 패턴 식별 및 대체에 의존하기 때문에 암호화 후 압축은 최소한의 이점을 가져 오지 않습니다. 압축하면 암호화와 결합 할 때 보안 문제가 발생할 수 있습니다.위협 모델에 미치는 영향이 압축의 이점을 능가하는지주의 깊게 평가해야합니다. 자세한 내용은 [CRIME 공격에 대한이 설명] (http://security.stackexchange.com/a/19914/16485)을 참조하십시오. – Andy

+1

압축은 아니지만 SSL 프로토콜이 설계되고 쿠키를 처리하는 방식입니다. 그냥 압축하고 암호화해도 좋습니다. – zaph

답변

3

C# Cryptography 패키지, C# Compression 및 NuGet NequeoIOCompress 패키지.

암호화 패키지에는 AES, RSA, 3DES, Blowfish, Twofish, CMS, PGP, EllipticCurve, Rijndael 및 일부 다른 클래스의 암호화 클래스가 포함되어 있습니다. 또한 ProtectedData 클래스에 내장 된 .Net을 사용하는 데이터 보호 클래스도 포함됩니다. 원하는대로이 패키지를 사용할 수 있습니다.

압축 패키지에는 Bzip2, Zip, Huffman, Zlib, GZip 및 7zip 압축에 대한 압축 클래스가 포함되어 있습니다. 원하는대로이 패키지를 사용할 수 있습니다.

암호화 패키지에서 AES를 사용하면 빠른 샘플을 얻을 수 있습니다.

// Create a new AES cryto. 
using (AdvancedAES aes = new AdvancedAES()) 
{ 
    bool ret = false; 

    ret = aes.EncryptFile(pathToDecryptedFile, pathToEncryptedFile, Key, IV); 
    ret = aes.DecryptFile(pathToDecryptedFile, pathToEncryptedFile, Key, IV); 
} 

위의 코드는도 내장되어 async 기능, 당신은 또한 암호화하고 Stream, Stringbyte[] 내에서 해독 할 수있는 암호화하고 파일을 해독하는 얻는만큼 간단합니다. 또 다른 기능은 암호화 또는 암호 해독 전에 BlockSize, CipherMode, KeySizePaddingMode을 변경하는 기능 (AES)입니다.

Blowfish, Twofish 및 Rijndael과 같은 암호화 클래스는 단지 byte[] 데이터를 전달하고 암호화되거나 해독 된 데이터가 byte[] 인 간단한 암호화 및 암호 해독 방법을 제공합니다.

PGP와 같은 암호화 클래스에는 공개 키와 비밀 키를 사용하여 입력 데이터를 서명하고 확인하는 등의 더 많은 기능이 있습니다.

RSA와 같은 암호화 클래스는 파일 기반 x509 인증서를 사용하거나 인증서가 저장소에있는 경우 파일 및 스트림을 암호화하고 해독 할 수 있습니다.

압축 패키지에서 GZip을 사용하면 빠른 샘플을 얻을 수 있습니다.

Nequeo.IO.Compression.GZipStream.Decompress(zipStream, unZipStream); 
Nequeo.IO.Compression.GZipStream.Compress(unZipStream, zipStream); 

GZip, ZLib 데이터를 압축하고 압축 해제하는 것이 간단합니다.

압축 패키지에서 7zip을 사용하면 빠른 샘플을 얻을 수 있습니다.

Nequeo.IO.Compression.SevenZip.Decompress(zipFilename, unZipDirectorPath); 
Nequeo.IO.Compression.SevenZip.Compress(zipFilename, zipDirectorPath); 

는 BZip2로 압축하고, 압축하여 7zip과 함께 데이터의 압축을 동일한 압축 패키지 (NuGet NequeoIOCompression)를 사용한다.

위에서 언급 한 것처럼이 세 가지 NuGet 패키지는 무료로 사용하고 배포 할 수 있습니다. 7Zip 압축은 x64, x86 처리의 경우 7zip.dll을 사용합니다. 압축 패키지를 설치하면 7zip.dll 바이너리가 포함됩니다.

+0

6 단어 또는 광휘와 달리 트롤을 멀리하십시오. –

+0

링크를 하나의 문장 대답으로 복사하여 붙여 넣는 것은 도움이되지 않습니다. –

+0

트롤링, 질문에 대답하는 대신 도움이됩니까? 트롤링 대신 질문에 대답하면서 시간을 보내보십시오. –