CryptDecode mit Modifikator CRYPT_ARCH_ZIP - Wie verwenden?

 

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.

 
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
 
sanyooooook:
nicht der richtige Ansatz
Mehr Details, wenn Sie können.
 

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.

 
C-4:
Mehr Details, wenn Sie können.
Oder was in
link.zip
durch die Archivfunktion erstellt wurde?
 
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?
 
sanyooooook:
oder was in
von der Archivfunktion erstellt wurde?
Nein, da steht Null. CryptDecode dekodiert zip. Ich habe versucht, ein Zip-Archiv zu erstellen - die Antworten von CryptEncode stimmen nicht mit denen der regulären Archivierungsprogramme überein. Die gezippte Datei von CryptEncode ist viel kürzer, was indirekt Ihre Theorie bestätigt!
 
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...
 
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.

 

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

 
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.