我必须在 zip 文件中获取一个文件的目录
I have to take the directory of a file in zip file
谁能帮我解决我的问题。
我必须在 zip 文件中获取一个文件的目录,以便我可以计算它的 MD5 哈希值(无需解压缩)。我正在使用 DotNetZip
库,但找不到问题的解决方案。我会告诉你我试过的东西,希望你能尽快提供帮助。
谢谢!
if (ofd.ShowDialog() == DialogResult.OK)
{
using (ZipFile zip = ZipFile.Read(ofd.FileName))
{
foreach (ZipEntry f in zip)
{
GetMD5HashFromFile(ofd.FileName+"\"+f.FileName);
}
}
}
问题是您没有提取 Zip 条目,它仍在存档中。这就是它找不到路径的原因。
我建议使用流并对其进行计算,而无需提取。
请注意 MD5 没有冲突安全。
您必须在项目中引用 System.IO.Compression.FileSystem.dll
。
完整的工作控制台应用程序:
public class Program
{
static void Main(string[] args)
{
var z = ZipFile.OpenRead(@"C:\directory\anyfile.zip");
foreach (ZipArchiveEntry f in z.Entries)
{
var yourhash = GetMD5HashFromFile(f.Open());
}
}
public static string GetMD5HashFromFile(Stream stream)
{
using (var md5 = new MD5CryptoServiceProvider())
{
var buffer = md5.ComputeHash(stream);
var sb = new StringBuilder();
for (int i = 0; i < buffer.Length; i++)
{
sb.Append(buffer[i].ToString("x2"));
}
return sb.ToString();
}
}
谁能帮我解决我的问题。
我必须在 zip 文件中获取一个文件的目录,以便我可以计算它的 MD5 哈希值(无需解压缩)。我正在使用 DotNetZip
库,但找不到问题的解决方案。我会告诉你我试过的东西,希望你能尽快提供帮助。
谢谢!
if (ofd.ShowDialog() == DialogResult.OK)
{
using (ZipFile zip = ZipFile.Read(ofd.FileName))
{
foreach (ZipEntry f in zip)
{
GetMD5HashFromFile(ofd.FileName+"\"+f.FileName);
}
}
}
问题是您没有提取 Zip 条目,它仍在存档中。这就是它找不到路径的原因。 我建议使用流并对其进行计算,而无需提取。 请注意 MD5 没有冲突安全。
您必须在项目中引用 System.IO.Compression.FileSystem.dll
。
完整的工作控制台应用程序:
public class Program
{
static void Main(string[] args)
{
var z = ZipFile.OpenRead(@"C:\directory\anyfile.zip");
foreach (ZipArchiveEntry f in z.Entries)
{
var yourhash = GetMD5HashFromFile(f.Open());
}
}
public static string GetMD5HashFromFile(Stream stream)
{
using (var md5 = new MD5CryptoServiceProvider())
{
var buffer = md5.ComputeHash(stream);
var sb = new StringBuilder();
for (int i = 0; i < buffer.Length; i++)
{
sb.Append(buffer[i].ToString("x2"));
}
return sb.ToString();
}
}