CryptDecode mit Modifikator CRYPT_ARCH_ZIP - Wie verwenden? - Seite 7

 

Wassilij!

Haben Sie eine Antwort erhalten?

 
Noch nicht. Ich denke, sie werden diesen Thread lesen und gleich hier antworten. Ich warte.
 
Bitte erstellen Sie eine klare Liste von Fragen.

Die Funktion arbeitet mit einem separaten Datenpuffer, nicht mit Archivdateien.
Der Deflate-Algorithmus wird verwendet, und die Funktion wurde eingeführt, um in WebRequest verwendet zu werden, falls die Antwort vom Server zurückgesendet wird.

Der Schlüsselparameter wird nicht verwendet.
 
mql5:
Bitte erstellen Sie eine klare Liste von Fragen.

Die Funktion arbeitet mit dem einzelnen Datenpuffer, nicht mit den Archivdateien.
Der Deflate-Algorithmus wird verwendet, und die Funktion wurde eingeführt, um in WebRequest verwendet zu werden, falls die Antwort vom Server gebraten wird.

Der Schlüsselparameter wird nicht verwendet.

Guten Tag!

Eine Frage: Was bedeuten die 4 Bytes am Ende vonCryptEncode() mit dem Parameter CRYPT_ARCH_ZIP?

Wenn Sie denDeflate-Algorithmus verwenden, können Sie auch ZIP-Archive dekomprimieren, wenn Sie wissen, wie Sie diese 4 Bytes erhalten.

( Beispiel ZIP-Decompiler auf Seite 6)

 
Mikalas:

Guten Tag!

Eine Frage: Was bedeuten die 4 Bytes am Ende vonCryptEncode() mit dem Parameter CRYPT_ARCH_ZIP?

Dies ist für die Integritätskontrolle, ADLER32 oder CRC32 (hängt von den Archivierungsparametern ab (Adler32 wird in MQL immer verwendet) und kann fehlen) von den Quelldaten
 
und die ersten 2 Bytes?
 
sanyooooook:
aber die ersten 2 Bytes?

Höchstwahrscheinlich ist es das:

0x78 - Vorzeichen der gepackten Daten

0x5E - Komprimierungsverfahren

Diese Bytes ändern sich nicht (ich habe es überprüft)

 
mql5:
Dies ist für die Integritätskontrolle, ADLER32 oder CRC32 (darf nicht vorhanden sein) von den Quelldaten

Ich danke Ihnen.

ZIP ohne 4 Bytes und CRC32 aus ZIP-Archiv wird nicht entpackt :(

Vasiliy, unser Projekt wird nicht funktionieren

Es sei denn, die Jungs von MQ kommen uns auf halbem Weg entgegen und fügen eine Flagge zu

functionCryptDecode(CRYPT_ARCH_ZIP, data, key, result,NO_READ_CRC) ;

oder nehmen Sie CRC32 aus der ZIP-Datei:

CryptDecode(CRYPT_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:

Ich danke Ihnen.

ZIP ohne 4 Bytes und CRC32 aus ZIP-Archiv wird nicht entpackt :(

Wassili, unsere Idee wird nicht funktionieren.

Es sei denn, die Jungs von MQ kommen uns auf halbem Weg entgegen und fügen eine Flagge in

functionCryptDecode(CRYPT_ARCH_ZIP, data, key, result,NO_READ_CRC) ;

Können wir versuchen, vier leere Bytes einzuschieben?

mql5:
Dies ist für die Integritätskontrolle, ADLER32 oder CRC32 (hängt von den Archivierungsparametern ab (MQL verwendet immer Adler32) und darf nicht) der Quelldaten
 
C-4:

Vielleicht sollten Sie versuchen, vier leere Bytes einzuschieben?

Ich habe es ohne die letzten 4 Bytes und mit den letzten 4 Bytes "0" versucht - es funktioniert nicht :(