ProgrammerForever
@ProgrammerForever
Учитель, автоэлектрик, программист, музыкант

Как использовать русские символы в zip пароле в Ionic.Zip?

Добрый день. Возникла задача - использовать zip файлы в программе на c#. Нужна поддержка паролей при разархивировании, поэтому установил Ionic.Zip.
Код такой:
using Ionic.Zip;
using System;
using System.IO;
using System.Text;

namespace zipExtractor
{
 class Program
    {
	static void Main(string[] args)
        {
			var isDebugMode = true;
		
            var zipFileName = "archive.zip";
            var passWord = "password";
            var filesList = "1.txt";

			//magic

			using (ZipFile zip = ZipFile.Read(zipFileName, new ReadOptions { Encoding = Encoding.GetEncoding("cp866") }))
            {
                foreach (ZipEntry e in zip)
                {
                    if (e.FileName==filesList)
                    {
                        
                        e.ExtractWithPassword(ExtractExistingFileAction.OverwriteSilently, passWord);
                        if (isDebugMode)
                        {
                            Console.WriteLine($"{e.FileName}");
                        }
                    }
                }
            }
			Console.ReadKey();
        }
    }
}

Протестировал на разных архивах. Если в архиве есть русские символы, то вылетает исключение Ionic.Zip.BadPasswordException: "bad password", т.е. неверный пароль. Посмотрел как кодируется пароль через Advanced Archive Password Recovery, пароль "пароль" отобразился как "43f 430 440 43e 43b 44c", т.е. юникод.
Пробовал конвертировать строку перед разархивированием, не помогло. Как побороть это?
  • Вопрос задан
  • 194 просмотра
Пригласить эксперта
Ответы на вопрос 1
yarosroman
@yarosroman Куратор тега C#
C# the best
Перед использованием переведите строку в ascii, вот, https://social.msdn.microsoft.com/Forums/vstudio/e...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы