Невозможно правильно создать защищенный паролем почтовый файл с помощью библиотеки Rebex - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь создать защищенный паролем zip-файл с использованием библиотек Rebex.

Вот код, который я использую

using (ZipArchive zip = new ZipArchive(ZipFilePath, ArchiveOpenMode.Create))
{
   // Set the Password first
   zip.Password = strUserPIN;

   // Change the default Encryption algorithm
   zip.EncryptionAlgorithm = EncryptionAlgorithm.Aes256;

   // Add the file to newly created "files" folder within the zip file
   zip.AddFile(Temp_BPI_SaveLocation + strDataFilewithTimeStamp, @"\files\");

   //Save the Zip file
   zip.Save();

   // cloase the zip file
   zip.Close();
}

Однако, когда я пытаюсь открыть файл, яне появляется ожидаемое диалоговое окно «Требуется пароль».

Вместо этого я получаю сообщение об ошибке «Windows не может завершить извлечение».Файл назначения не может быть создан '

Мне нужно получить ожидаемое диалоговое окно "Необходим пароль", чтобы я мог правильно распаковать файл

Кто-нибудь когда-либо имел дело с этой проблемой и нашелрешение?

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Вот ответ, который я принял с форума Rebex

"Это показало, что проблема в самом экстракторе Windows. Вы используете EncryptionAlgorithm.Aes256 для шифрования ZIP-архива, что является хорошим выбором, но этоалгоритм шифрования не поддерживается экстрактором Windows (проверьте this и this ).

Единственный алгоритм шифрования, поддерживаемый экстрактором Windows, - это устаревший алгоритм EncryptionAlgorithm.Zip20, которыйв настоящее время небезопасно (вы можете проверить его здесь ).

Предлагаемое решение - использовать алгоритм EncryptionAlgorithm.Aes256 для защиты ZIP-архива и использовать стороннее приложение для его извлечения. "

0 голосов
/ 28 декабря 2018

ОБНОВЛЕНИЕ:

Клиент использовал встроенный в Windows ОС ZIP-экстрактор для извлечения созданного ZIP-архива.К сожалению, экстрактор ОС Windows не поддерживает шифрование AES, что вызвало указанную ошибку.Более подробную информацию и возможные решения можно найти на форуме Rebex .


Ошибка 'Windows не может завершить извлечение.Файл назначения не может быть создан »означает, что имя файла содержит недопустимые символы для текущей платформы.В вашем примере кода вы использовали strDataFilewithTimeStamp в качестве аргумента имени файла, который, вероятно, содержит двоеточие ':', которое является недопустимым символом для имени файла в Windows.

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

Чтобы решить эту проблему, убедитесь, что имя файла не содержит недопустимых символов в Windows (см. метод System.IO.Path.GetInvalidFileNameChars() на платформе Windows).

...