2014-12-28 4 views
1

Я использую dotnetzip для создания некоторых архивных файлов с некоторым AES паролем как:Действительно ли DotNetZip использует WinZipAes256?

using (ZipFile zip = new ZipFile()) 
{ 
     zip.Password = PASS; 
     zip.Encryption = EncryptionAlgorithm.WinZipAes256; 
     zip.AddFile("test.txt"); 
     zip.Save("test.zip"); 
} 

после этого я заметил, чтение файла без указания алгоритма, что он работал без проблем

using (ZipFile zip = ZipFile.Read("test.zip") 
{ 
     zip.Password = PASS; 
     // zip.Encryption = EncryptionAlgorithm.WinZipAes256; 
     foreach (ZipEntry e in zip) 
     { 
      e.Extract(@"C:\tmp\"); 
     } 
} 

тогда были случаи, когда выдержка создавала нечитаемый файл, но не всегда; большинство раз было прекрасно читаемым без указания алгоритма.

теперь основан на их вики:

Создать архив Zip, который использует WinZip-совместимое шифрование AES. Отвечая на вопрос о том, что стандартная защита паролей слабая, WinZip расширил спецификацию ZIP и добавил способ использования AES Encryption для защиты записей в Zip-файле.

Но не понимаю, действительно ли это шифрование AES 256.

В любом случае, указав алгоритм, он будет извлекать только читаемые файлы, чтобы файл был уверенным для чтения, теперь я беспокоюсь о безопасности.

EDIT Обязательно укажите алгоритм пароля перед извлечением или файлы не всегда будут считаться читаемыми!

+2

Есть фактический вопрос, который вы хотели бы спросить? –

+0

Да, может быть, неясно, но мой фактический вопрос: если шифрование находится в aes 256 или pkzip. – daniel

+0

Вопрос _ «DotNetZip автоматически определяет шифрование архива, которое он читает, когда вы указываете правильный пароль?» _ Также имеет значение. Вам нужно будет проверить zip-файл или код, записывающий архив, чтобы ответить на ваш вопрос. – CodeCaster

ответ

4

Zip-entry действительно использует AES256. В исходном коде библиотеки dotnetzip вы можете видеть, что используемый алгоритм шифрования извлекается из самого байтового содержимого. Вот почему вам не нужно назначать правильный алгоритм при извлечении. (Только пароль) заполнение переменной _Encryption_FromZipFile

Исходный код: dotnetzip source