[英]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.