繁体   English   中英

DotNetZip密码错误特殊字符

[英]DotNetZip password error special characters

当我使用以下代码(指定密码)打开zip文件时,可以在其中获取文件。

如果我使用IZArc打开档案并在此处设置密码,它会告诉我密码无效。

这可能是什么原因?

using (var zip = new ZipFile())
{
            zip.Password = "ïÁ×éÖËØ";
            zip.Encryption = EncryptionAlgorithm.PkzipWeak;

            var fullTaxFormFilePath = @"C:\DETALHE.txt";
            zip.AddFile(fullTaxFormFilePath, "");

            zip.Save(@"C:\DETALHEZIP.zip");
 }

问题是DotNetZip在内部在转换密码时使用IBM437代码页而不是unicode(请在此处的源代码中查找StringToByteArray)。 代码页最初是IBM PC中的代码页,因此,这就是为什么PkZip选择它的原因。 由于DotNetZip使用此代码页,这意味着由于回退,其中某些字符以奇怪的方式映射。 例如,您的密码映射到以下内容(忽略?,这仅仅是因为这些不是真正的字符):

ï-0x8b-?,Á-0x41-A,×-0x78-x,é-0x82-?,Ö-0x99-?,Ë-0x45-E,Ø-0x4f-O.

除非IZArc使用完全相同的后备行为,否则您将无法解密该文件。 不幸的是,IZArc似乎是封闭源代码,因此我无法验证它的用途。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM