CryptDecode с модификатором CRYPT_ARCH_ZIP - Как использовать?

 

Собственно вопрос в сабже. Как понимаю, речь идет именно об упаковке/распаковке zip массива. Это мегаполезная штука, вот только у меня не получилось ее использовать, функция CryptDecode упорно выдает ноль на тестовом zip архиве:

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   uchar array[];
   uchar key[]={0};
   uchar result[];
   int handle = FileOpen("link.zip", FILE_READ|FILE_BIN|FILE_COMMON);
   FileReadArray(handle, array);
   FileClose(handle);
   int d = CryptDecode(CRYPT_ARCH_ZIP, array, key, result);
   printf(GetLastError());
   printf("Read totals: " + (string)ArraySize(array));
  }

Возможно что-то другое надо указать в качестве ключа, или я не правильно понимаю значение модификатора CRYPT_ARCH_ZIP. В любом случае, в документации нет примера работы с функцией, что существенно осложняет ее понимание работы. Функция GetLastError пишет 4001 - Неожиданная внутренняя ошибка.

 
C-4:

Собственно вопрос в сабже. Как понимаю, речь идет именно об упаковке/распаковке zip массива. Это мегаполезная штука, вот только у меня не получилось ее использовать, функция CryptDecode упорно выдает ноль на тестовом zip архиве:

Возможно что-то другое надо указать в качестве ключа, или я не правильно понимаю значение модификатора CRYPT_ARCH_ZIP. В любом случае, в документации нет примера работы с функцией, что существенно осложняет ее понимание работы. Функция GetLastError пишет 4001 - Неожиданная внутренняя ошибка.

не верный подход
 
sanyooooook:
не верный подход
Подробней если можно.
 

ZIP-архив эта целая структура, функция же архивирует\разархивирует массив, т.е. сувать туда нужно только готовый для деархивации массив.

грубо говоря, разархивирует только то, что получается на выходе архивирующей функции.

 
C-4:
Подробней если можно.
или то что в
link.zip
было создано функцией архивации?
 
sanyooooook:

ZIP-архив эта целая структура, функция же архивирует\разархивирует массив, т.е. сувать туда нужно только готовый для деархивации массив.

грубо говоря, разархивирует только то, что получается на выходе архивирующей функции.

Понятно. В стиле MQ. Хотя главное есть - дешифровка zip'а. Не у кого нет случайно библиотеки по работе с zip-архивами на MQL?
 
sanyooooook:
или то что в
было создано функцией архивации?
Не, пишет ноль. CryptDecode декодирует zip. Пробовал создавать zip архив - ответы CryptEncode с штатными архиваторами не совпадают. У CryptEncode заархивированный файл получается гораздо короче, что косвенно подтверждает, твою теорию!
 
вот описание структуры файла http://blog2k.ru/archives/3391
Описание формата ZIP файла
  • 2014.05.29
  • Евгений Жирнов (jirnov@gmail.com)
  • blog2k.ru
ZIP файл состоит из трех областей: сжатые/несжатые данные, (последовательность структур Local File Header, сами данные и необязательных Data descriptor)центральный каталог (последовательность структур Central directory file header)описание центрального каталога (End of central directory record) С начала файла идет набор из Local File Header...
 
C-4:
Не, пишет ноль. CryptDecode декодирует zip. Пробовал создавать zip архив - ответы CryptEncode с штатными архиваторами не совпадают. У CryptEncode заархивированный файл получается гораздо короче, что косвенно подтверждает, твою теорию!

это не теория это так и есть, просто привыкли что в архиваторе всё готовое,

я тоже с дуру подумал что разархивирует файлы сделанные нормальным архиватором.

 

Проблема в том, что я не нахожу вхождений байт-массива выданного CryptEncode в обысном zip архиве.

 

Файл один и тотже. Значит в классическом zip архиве, должен быть участок соответсвующий байт-коду выданному функцией CryptEncode 

 
C-4:

Проблема в том, что я не нахожу вхождений байт-массива выданного CryptEncode в обысном zip архиве.

 

), значит не так ищешь.
Причина обращения: