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

 

Василий!

Ответили? 

 
Пока нет. Думаю они прочитают эту ветку и ответят прямо здесь. Ждем.
 
Пожалуйста, сформируйте чёткий список вопросов.

Функция работает с отдельным буфером данных, а не файлами архивов.
Используется алгоритм deflate, функция введена для использования в WebRequest, в случае, если ответ пожат сервером.

Параметр key не используется.
 
mql5:
Пожалуйста, сформируйте чёткий список вопросов.

Функция работает с отдельным буфером данных, а не файлами архивов.
Используется алгоритм deflate, функция введена для использования в WebRequest, в случае, если ответ пожат сервером.

Параметр key не используется.

Добрый день!

Вопрос один, что означают 4 байта в конце запакованных данных функцией CryptEncode() с параметром CRYPT_ARCH_ZIP

  

 

Если Вы используете алгоритм deflate, то можно и распаковывать ZIP архивы, зная как Вы получаете эти 4 байта.

( Пример распаковщика ZIP архива на 6 странице) 

 
Mikalas:

Добрый день!

Вопрос один, что означают 4 байта в конце запакованных данных функцией CryptEncode() с параметром CRYPT_ARCH_ZIP

Это для контроля целостности, ADLER32 или CRC32(зависит от параметров архивации (в MQL всегда используется Adler32) и может отсутствовать) от исходных данных
 
а первые 2 байта?
 
sanyooooook:
а первые 2 байта?

Скорее всего это: 

0x78 - признак запакованных данных

0x5E - метод компрессии

Эти байты не меняются (я проверял) 

 
mql5:
Это для контроля целостности, ADLER32 или CRC32(может отсутствовать) от исходных данных

Спасибо.

Не распаковывается ZIP без 4 байт и CRC32 из ZIP архива я подставлял - не распаковывается :( 

Василий, не получится наша затея  

Если, конечно, ребята из MQ не пойдут нам на встречу и не добавят флаг в

функцию  CryptDecodeCRYPT_ARCH_ZIP, data, key, result,   NO_READ_CRC ) ;

или брать CRC32 из ZIP файла:

CryptDecodeCRYPT_ARCH_ZIP, data, key, result,  USE_CRC_FROM_ZIP ) ; 

struct ZIP_HEADER
{
  uint   sign;
  ushort a_version;
  ushort bit_flag;
  ushort comp_method;
  ushort last_mod_time;
  ushort last_mod_date;
  //uint   crc_32;
  uchar  ll_crc;
  uchar  lh_crc;
  uchar  hl_crc;
  uchar  hh_crc;
  uint   pack_size;
  uint   unpack_size;
  ushort fn_len;
  ushort extr_field_len;
};
 
Mikalas:

Спасибо.

Не распаковывается ZIP без 4 байт и CRC32 из ZIP архива я подставлял - не распаковывается :( 

Василий, не получится наша затея  

Если, конечно, ребята из MQ не пойдут нам на встречу и не добавят флаг в

функцию  CryptDecodeCRYPT_ARCH_ZIP, data, key, result,   NO_READ_CRC ) ;

Может попробывать подсунуть пустые четыре байта?

mql5:
Это для контроля целостности, ADLER32 или CRC32(зависит от параметров архивации (в MQL всегда используется Adler32) и может отсутствовать) от исходных данных
 
C-4:

Может попробывать подсунуть пустые четыре байта?

 Я пробовал и вовсе без последних 4 байт, и с последними 4-я "0" - не получается :(
Причина обращения: