SevenZSharp Декодировать с паролем
Я работаю с SevenZSharp отсюда
для декодирования файла я использую:
CompressionEngine.Current.Decoder.DecodeIntoDirectory(@"D:\target\host_update.7z", @"D:\target");
Но у меня нет информации, как расшифровать файл.7z с паролем!? Пожалуйста, помогите мне. Спасибо
2 ответа
Использовать "SevenZipSharp", который поддерживает пароли и широкий спектр форматов...
Импортируйте SevenZipSharp.dll в.Net ссылки на проекты...
Поместите "7zx64.dll" и "7z.dll" в каталог...
Затем используйте этот код для проверки пропуска и извлечения, если правильно.
код
Imports SevenZip
Public Class FrmMain
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Btn1.Click
''Call to set DLL depending on processor type''
If Environment.Is64BitProcess Then
SevenZip.SevenZipCompressor.SetLibraryPath("7zx64.dll")
Else
SevenZip.SevenZipCompressor.SetLibraryPath("7z.dll")
End If
''Set Destination of extraction''
Dim DestDir = Application.StartupPath
Try
''Check file with password''
Dim Ext As New SevenZipExtractor(Tb1.Text, Tb2.Text)
If Ext.Check() Then
''Extract files to destination''
Ext.BeginExtractArchive(DestDir)
End If
Catch ex As Exception
MessageBox.Show(ex.ToString())
End Try
End Sub
End Class
Судя по исходному коду SevenZSharp, он не поддерживает файлы, защищенные паролем.
Вот еще кое-что, что может помочь вам из кодекса. Похоже, что интерфейс называется ICryptoGetTextPassword
что вы могли бы использовать, если 7z защищен паролем.
редактировать
Если немного подробнее взглянуть на SevenZipSharp, кажется, что он должен поддерживать защищенные паролем архивы, соответствующие странице их проекта ( http://sevenzipsharp.codeplex.com/):
- Шифрование и пароли поддерживаются.
Вам нужно скачать последний код из Codeplex и собрать его самостоятельно, в нем у вас будет класс под названием SevenZipExtractor
где у вас есть следующий конструктор:
/// <summary>
/// Initializes a new instance of SevenZipExtractor class.
/// </summary>
/// <param name="archiveFullName">The archive full file name.</param>
/// <param name="password">Password for an encrypted archive.</param>
public SevenZipExtractor(string archiveFullName, string password)
: base(password)
{
Init(archiveFullName);
}
Обратите внимание, что это не то же самое, что Seven7Sharp, это SevenZipSharp, но он работает с 7z
,