CryptDecode mit Modifikator CRYPT_ARCH_ZIP - Wie verwenden?

Vasiliy Sokolov  

Die eigentliche Frage ist die folgende. Wenn ich es richtig verstanden habe, geht es um das Packen/Entpacken von Zip-Arrays. Es ist mega nützlich, aber ich kann es nicht verwenden, die Funktion CryptDecode liefert bei einem Test-Zip-Archiv hartnäckig null Ergebnisse:

//+------------------------------------------------------------------+
//| 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));
  }

Vielleicht muss etwas anderes als Schlüssel angegeben werden, oder ich habe eine falsche Vorstellung vom CRYPT_ARCH_ZIP-Modifikatorwert. Auf jeden Fall gibt es in der Dokumentation kein Beispiel für die Verwendung der Funktion, was das Verständnis ihrer Funktionsweise erheblich erschwert. Die Funktion GetLastError schreibt 4001 - Unerwarteter interner Fehler.

Alexandr Bryzgalov  
C-4:

Die eigentliche Frage ist die folgende. Wenn ich es richtig verstanden habe, geht es um das Packen/Entpacken von Zip-Arrays. Es ist mega nützlich, aber ich kann es nicht verwenden, die Funktion CryptDecode liefert bei einem Test-Zip-Archiv hartnäckig null Ergebnisse:

Vielleicht muss etwas anderes als Schlüssel angegeben werden, oder ich habe eine falsche Vorstellung vom CRYPT_ARCH_ZIP-Modifikatorwert. Auf jeden Fall gibt es in der Dokumentation kein Beispiel für die Verwendung der Funktion, was das Verständnis ihrer Funktionsweise erheblich erschwert. Die Funktion GetLastError schreibt 4001 - Unerwarteter interner Fehler.

falscher Ansatz
Vasiliy Sokolov  
sanyooooook:
nicht der richtige Ansatz
Mehr Details, wenn Sie können.
Alexandr Bryzgalov  

Ein ZIP-Archiv ist eine ganze Struktur, aber die Funktion archiviert/entarchiviert ein Array, d.h. nur ein Array, das zum Entarchivieren bereit ist, sollte dort abgelegt werden.

Grob gesagt, wird nur die Ausgabe der Archivierungsfunktion entarchiviert.

Alexandr Bryzgalov  
C-4:
Mehr Details, wenn Sie können.
Oder was in
link.zip
durch die Archivfunktion erstellt wurde?
Vasiliy Sokolov  
sanyooooook:

Ein ZIP-Archiv ist eine ganze Struktur, aber die Funktion archiviert/entarchiviert ein Array, d.h. nur ein Array, das zum Entarchivieren bereit ist, sollte dort abgelegt werden.

Grob gesagt, wird nur die Ausgabe der Archivierungsfunktion entarchiviert.

Ich hab's. MQ-Stil. Das Wichtigste ist jedoch die Entschlüsselung der Zip-Datei. Hat nicht zufällig jemand eine Bibliothek für die Arbeit mit Zip-Archiven in MQL?
Alexandr Bryzgalov  
Hier ist eine Beschreibung der Dateistruktur 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...
Alexandr Bryzgalov  
C-4:
Nein, da steht Null. CryptDecode dekodiert zip. Ich habe versucht, ein Zip-Archiv zu erstellen, CryptEncode und normale Archivierungsprogramme haben nicht zusammengepasst. CryptEncode macht die gezippte Datei viel kürzer, was indirekt Ihre Theorie bestätigt!

Das ist keine Theorie, sondern sie sind einfach daran gewöhnt, alles im Archiv bereit zu haben,

Dummerweise dachte ich, es würde Dateien entpacken, die mit einem normalen Archivierungsprogramm erstellt wurden.

Vasiliy Sokolov  

Das Problem ist, dass ich die von CryptEncode angegebenen Byte-Array-Vorkommen in einem normalen Zip-Archiv nicht finden kann.

Die Datei ist die gleiche. In einem klassischen Zip-Archiv sollte also ein Byte-Array vorhanden sein, das dem CryptEncode-Byte-Array entspricht

Alexandr Bryzgalov  
C-4:

Das Problem ist, dass ich die von CryptEncode angegebenen Byte-Array-Vorkommen in einem normalen Zip-Archiv nicht finden kann.

), Sie suchen also in die falsche Richtung.
Grund der Beschwerde: