CryptDecode con modificatore CRYPT_ARCH_ZIP - Come usare? - pagina 7

 

Vasiliy!

Hai avuto una risposta?

 
Non ancora. Penso che leggeranno questo thread e risponderanno proprio qui. In attesa.
 
Si prega di formare una lista chiara di domande.

La funzione funziona con un buffer di dati separato, non con i file di archivio.
Viene utilizzato l'algoritmo deflate, e la funzione è stata introdotta per essere utilizzata in WebRequest, nel caso in cui la risposta venga raccolta dal server.

Il parametro chiave non viene utilizzato.
 
mql5:
Si prega di formare una lista chiara di domande.

La funzione lavora con il singolo buffer di dati, non con i file dell'archivio.
Viene utilizzato l'algoritmo deflate, e la funzione è stata introdotta per essere utilizzata in WebRequest, nel caso in cui la risposta sia fritta dal server.

Il parametro chiave non viene utilizzato.

Buon pomeriggio!

Una domanda, cosa significano i 4 byte alla fine delCryptEncode() con il parametro CRYPT_ARCH_ZIP?

Se usate l'algoritmodeflate, potete anche decomprimere archivi ZIP sapendo come si ottengono quei 4 byte.

( Esempio di decompilatore ZIP a pagina 6)

 
Mikalas:

Buon pomeriggio!

Una domanda, cosa significano i 4 byte alla fine delCryptEncode() con il parametro CRYPT_ARCH_ZIP?

Questo è per il controllo di integrità, ADLER32 o CRC32 (dipende dai parametri di archiviazione (Adler32 è sempre usato in MQL) e può mancare) dai dati di origine
 
e i primi 2 byte?
 
sanyooooook:
ma i primi 2 byte?

Molto probabilmente è così:

0x78 - segno dei dati confezionati

0x5E - metodo di compressione

Questi byte non cambiano (ho controllato)

 
mql5:
Questo è per il controllo di integrità, ADLER32 o CRC32 (può non esistere) dai dati di origine

Grazie.

ZIP senza 4 byte e CRC32 dall'archivio ZIP non viene scompattato :(

Vasiliy, la nostra impresa non funzionerà

A meno che, naturalmente, i ragazzi di MQ non ci vengano incontro a metà strada e aggiungano una bandiera a

funzioneCryptDecode(CRYPT_ARCH_ZIP, dati, chiave, risultato,NO_READ_CRC) ;

o prendere CRC32 dal file ZIP:

CryptDecode(CRYPT_ARCH_ZIP, dati, chiave, risultato,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:

Grazie.

ZIP senza 4 byte e CRC32 dall'archivio ZIP non viene scompattato :(

Vasily, la nostra idea non funzionerà.

A meno che, naturalmente, i ragazzi di MQ non ci vengano incontro a metà strada e aggiungano una bandiera in

funzioneCryptDecode(CRYPT_ARCH_ZIP, dati, chiave, risultato,NO_READ_CRC) ;

Possiamo provare a infilare un quattro byte vuoto?

mql5:
Questo è per il controllo di integrità, ADLER32 o CRC32 (dipende dai parametri di archiviazione (MQL usa sempre Adler32) e può non esistere) dei dati di origine
 
C-4:

Forse provare a infilare un quattro byte vuoto?

Ho provato senza gli ultimi 4 byte e con gli ultimi 4 byte "0" - non funziona :(