gpt4 book ai didi

vb.net - 在 vb.net 中测试 zip 密码的正确性

转载 作者:行者123 更新时间:2023-12-01 15:05:26 34 4
gpt4 key购买 nike

我想测试 zip 在 vb.net 中是否有特定密码。我如何创建像 check_if_zip_pass(file, pass) As Boolean 这样的函数?

我似乎无法在 .net 框架中找到任何已经做到这一点的东西,除非我遗漏了一些非常明显的东西。

此方法不应提取文件,仅在尝试的传递有效时返回 True,否则返回 False

最佳答案

使用第 3 方库,例如 DotNetZip .请记住,zip 文件中的密码适用于条目,而不是整个 zip 文件。所以你的测试没有多大意义。

WinZip 可能拒绝解压缩 zip 文件的一个原因是第一个条目受密码保护。可能只有一些条目受密码保护,而另一些则没有。可能是不同的条目使用了不同的密码。你必须决定你想对这些可能性做什么。

一种选择是假设在 zip 文件中的任何加密条目上只使用一个密码。 (这不是 zip 规范所要求的)在这种情况下,下面是一些示例代码来检查密码。不解密就无法检查密码。所以这段代码解密并提取到 Stream.Null。

public bool CheckZipPassword(string filename, string password)
{
bool success = false;
try
{
using (ZipFile zip1 = ZipFile.Read(filename))
{
var bitBucket = System.IO.Stream.Null;
foreach (var e in zip1)
{
if (!e.IsDirectory && e.UsesEncryption)
{
e.ExtractWithPassword(bitBucket, password);
}
}
}
success = true;
}
catch(Ionic.Zip.BadPasswordException) { }
return success;
}

糟糕!我认为在 C# 中。在 VB.NET 中,这将是:

    Public Function CheckZipPassword(filename As String, password As String) As System.Boolean
Dim success As System.Boolean = False
Try
Using zip1 As ZipFile = ZipFile.Read(filename)
Dim bitBucket As System.IO.Stream = System.IO.Stream.Null
Dim e As ZipEntry
For Each e in zip1
If (Not e.IsDirectory) And e.UsesEncryption Then
e.ExtractWithPassword(bitBucket, password)
End If
Next
End Using
success = True
Catch ex As Ionic.Zip.BadPasswordException
End Try
Return success
End Function

关于vb.net - 在 vb.net 中测试 zip 密码的正确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6301226/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com