【发布时间】:2018-10-17 18:25:59
【问题描述】:
这段代码在大多数情况下都能正常工作,但是,大约 1/3 的时间,它完成了大约 80% 的工作并失败了。解压 X 射线图像文件时解压失败。 (它们是没有文件扩展名的编号文件。)它似乎大部分时间都能够处理它们,但是,每隔一段时间就会有一个无法解压缩的 X 射线。当它在文件上失败时,它会给它一个带有随机扩展名的随机文件名。它似乎在解压缩时遇到了无法理解的字符组合。
这是专门发生在 aes 加密的 zip 文件中。如果他们发送相同的压缩文件而没有使用 aes 加密,那么程序解压缩它们就好了。
当我使用 7zip 应用程序手动解压缩同一个 zip 文件时,我输入了相同的密码,它就可以正常工作了。
例如。文件应该是:00043 ==> 解压失败产生:1hzcqoee.nss
错误信息:
尚未计算最终的哈希值。
堆栈跟踪:
在 Ionic.Zip.WinZipAesCipherStream.get_FinalAuthentication() 在 Ionic.Zip.ZipEntry.VerifyCrcAfterExtract(Int32 计算 Crc32,EncryptionAlgorithm 加密算法,Int32 预期 Crc32,流 archiveStream,Int64 uncompressedSize) 在 Ionic.Zip.ZipEntry.ExtractToStream(流 archiveStream,流输出,EncryptionAlgorithm 加密算法,Int32 预期 Crc32) 在 Ionic.Zip.ZipEntry.InternalExtractToBaseDir(字符串 baseDir,字符串密码,ZipContainer zipContainer,ZipEntrySource zipEntrySource,字符串文件名) 在 Ionic.Zip.ZipFile._InternalExtractAll(字符串路径,布尔 overrideExtractExistingProperty) 在 RHASystem64.ProcessNewVisitUpload.ExtractZip(String zipToUnpack, String unpackDirectory)
代码:
using Ionic.Zip;
public bool ExtractZip(string zipToUnpack, string unpackDirectory)
{
using (ZipFile zip1 = ZipFile.Read(zipToUnpack))
{
foreach (ZipEntry z in zip1)
{
if (z.FileName.Contains(".mdf"))
{
foundMDF = true;
isEncrypted = z.UsesEncryption;
}
}
if(isEncrypted)
zip1.Password = zipPass;
zip1.ExtractAll(unpackDirectory, ExtractExistingFileAction.DoNotOverwrite);
ExtractSuccess = true;
}
return ExtractSuccess;
}
我什至尝试使用以下行添加第二次尝试,它会产生相同的结果。
zip1.ParallelDeflateThreshold = -1;
以前有人处理过这个错误吗?请帮我解决这个哈希错误!谢谢!
【问题讨论】:
-
同样的事情发生在我身上,不是经常发生,但确实发生了。找到原因或解决方法有什么运气吗?
标签: c# zip hashcode zipfile dotnetzip