无法使用 Rebex 库正确创建受密码保护的 zip 文件

Unable to properly create the password protected zip file using Rebex library

我正在尝试使用 Rebex 库创建受密码保护的 zip 文件。

这是我使用的代码

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();
}

但是,当我尝试打开文件时,我没有看到预期的 'Password needed' 对话框。

相反,我收到的错误消息是 'Windows cannot complete the extraction. The destination file could not be created'

我确实需要获得预期的 'Password needed' 对话框,以便我可以正确提取文件

有没有人处理过这个问题并找到了解决方案?

更新:

客户端使用 Windows OS 内置 ZIP 提取器提取生成的 ZIP 存档。不幸的是,Windows OS 提取器无法进行 AES 加密,这导致了上述错误。可以在 Rebex forum.

找到更多详细信息和可能的解决方案

错误'Windows cannot complete the extraction. The destination file could not be created'表示文件名包含一些对当前平台无效的字符。在您的示例代码中,您使用 strDataFilewithTimeStamp 作为文件名参数,其中可能包含冒号“:”,这是 Windows.

上文件名的无效字符

这取决于提取器在这种情况下将显示什么(密码对话框或错误)。

要解决此问题,请确保文件名不包含任何 Windows 上的无效字符(请检查 Windows 平台上的 System.IO.Path.GetInvalidFileNameChars() 方法)。

这是我从 Rebex 论坛接受的答案

”这表明问题出在Windows 提取器本身。您正在使用 EncryptionAlgorithm.Aes256 加密 ZIP 存档,这是一个不错的选择,但 [=20= 不支持此加密算法] 提取器(请检查 this and this)。

提取器唯一支持的加密算法Windows是旧版EncryptionAlgorithm.Zip20算法,目前不安全(您可以查看here)。

建议的解决方案是使用 EncryptionAlgorithm.Aes256 算法来保护 ZIP 存档并使用第三方应用程序来提取它。"