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

 
Mikalas:
 Я пробовал - не получается :(

Как я понял CryptDecode юзает CRC32? - Если да, можно самим взять CRC32 хеш из архива и подсунуть его в конец упакованного массива:

struct ZIP_HEADER
{
  ...
  ushort last_mod_date;
  uint   crc_32;            // Берем это число и помещаем его в конец массива, который нужно распаковать
  uchar  ll_crc;
  ...
};
З.Ы. Сейчас читаю, что хешь необязательный аттрибут и в некоторых случаях может быть заполнен нулями.
 

Нет, не CRC32, а  Adler32

(они поправили текст, и они поправили и я поправил - перечитайте

Я же писал, не получается!!!!!

 
Mikalas:

Нет, не CRC32, а  Adler32

(они поправили текст, перечитайте) 

Я же писал, не получается!!!!!

Точно:

Mikalas:

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

 
Mikalas:

Спасибо.

Не распаковывается 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 ) ; 

Не надо добавлять флаг. Достаточно изменить CryptDecode таким образом, что бы она принимала CRC код, если он есть. Если его нет и поле кода забито нулями, код CRC не используется, все. К тому же не каждый архив может содержать хеш:

Иногда бывает невозможно вычислить данные на момент записи LocalFileHeader, тогда в crc32compressedSize и uncompressedSizeзаписываются нули третий бит в generalPurposeBitFlag ставится в единицу и после LocalFileHeader добавляется структура типа Data descriptor.

http://blog2k.ru/archives/3391 

 
C-4:

Не надо добавлять флаг. Достаточно изменить CryptDecode таким образом, что бы она принимала CRC код, если он есть. Если его нет и поле кода забито нулями, код CRC не используется, все. К тому же не каждый архив может содержать хеш:

Я же не знаю как MQ реализовали функцию, вот и сделал не несколько предложений

( может с флагом им будет проще сделать) 

 
Уважаемые MQ! Дайте пожалуйста ответ. Не могли бы Вы сделать сверку хеша опциональной?
 

Было бы очень хорошо.

Быстрый доступ к большому кол-ву файлов в ZIP архиве!

Маленькая БД с быстрым доступом к файлам - супер!

Открыл ZIP - сделал таблицу соответствий  и "гоняй" по оффсетам. 

 

... Думают видать.

Наверное неожидали что местные умельцы найдут такое неожиданное применение фичи CRYPT_ARCH_ZIP.

Mikalas:

Было бы очень хорошо.
Быстрый доступ к большому кол-ву файлов в ZIP архиве!
Маленькая БД с быстрым доступом к файлам - супер!
Открыл ZIP - сделал таблицу соответствий  и "гоняй" по оффсетам. 

 +100 Работа с архивами очень нужна. Конечно с полным сохранением контроля контента со стороны MQ. 

 
C-4:

... Думают видать.

Наверное неожидали что местные умельцы найдут такое неожиданное применение фичи CRYPT_ARCH_ZIP.

 +100 Работа с архивами очень нужна. Конечно с полным сохранением контроля контента со стороны MQ. Ни каких exe и исполнимых файлов внутри архива быть не должно.

Василий!

Не важно, есть EXE или нет!

Я могу "собрать" исполняемый файл из, на первый взгляд, ни чем не примечательных файлов,

добавляя или изменяя байты.

Для этого не обязательно юзать ZIP! 

Коль скоро мы можем загрузить и сохранить файлы, то сделать EXE - раз плюнуть! 

 
Mikalas:

Василий!

Не важно, есть EXE или нет!

Я могу "собрать" исполняемый файл из, на первый взгляд, ни чем не примечательных файлов!

Для этого не обязательно юзать ZIP! 

Вообще-то да. Можно зашифровать исполнимый файл так, что он ничем не будет отличаться от случайного набора байтов. 
Причина обращения: