簡體   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