CryptDecode with modifier CRYPT_ARCH_ZIP - How to use?

 

実際の問題はこうだ。私の理解では、ZIP配列のパッキング/アンパッキングの話だと思います。とても便利なものなのですが、CryptDecode関数が頑なにzipアーカイブのテスト結果をゼロにしてしまうので、使うことができません。

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

もしかしたら、何か他のキーが指定されているか、CRYPT_ARCH_ZIP修飾子の値について間違った考えをもっているのかもしれません。いずれにせよ、ドキュメントにはこの関数の使い方の例がないため、その仕組みを理解するのはかなり困難です。GetLastError関数は、4001 - Unexpected Internal Errorを書き込みます。

 
C-4:

実際の問題はこうだ。私の理解では、ZIP配列のパッキング/アンパッキングの話だと思います。とても便利なものなのですが、CryptDecode関数が頑なにzipアーカイブのテスト結果をゼロにしてしまうので、使うことができません。

もしかしたら、他のものをキーとして指定すべきなのかもしれませんし、CRYPT_ARCH_ZIP修飾子の値について間違った考えを持っているのかもしれません。いずれにせよ、ドキュメントにはこの機能の例が載っていないので、どのように動作するのか理解するのが難しい。GetLastError関数は、4001 - Unexpected Internal Errorを書き込みます。

曲がったやり方
 
sanyooooook:
あたらずともとおからず
できればもっと詳しく。
 

ZIP アーカイブは構造体全体ですが、この関数は配列をアーカイブ/アンアーカイブします。

大雑把に言うと、アーカイブ機能の出力のみをアンアーカイブする。

 
C-4:
できればもっと詳しく。
あるいは、どのような
link.zip
は、アーカイブ機能で作成されたのでしょうか?
 
sanyooooook:

ZIP アーカイブは構造体全体ですが、この関数は配列をアーカイブ/アンアーカイブします。

大雑把に言うと、アーカイブ機能の出力のみをアンアーカイブする。

了解です。MQスタイル。しかし、メインはZIPを復号することです。MQLでZIPアーカイブを扱うためのライブラリをお持ちの方はいらっしゃいませんか?
 
sanyooooook:
とか、 の何がアーカイブ機能で作成されたのでしょうか?
いや、ゼロと書いてある。CryptDecode は zip をデコードします。ZIPアーカイブを作成しようとしたところ、CryptEncodeの応答が通常のアーカイバと一致しない。CryptEncodeのzipファイルはもっと短いので、間接的にあなたの説を裏付けていますよ。
 
以下、ファイル構成について説明します。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:
いや、ゼロと書いてある。CryptDecode は zip をデコードします。ZIPアーカイブを作ろうとしたら、CryptEncodeと通常のアーカイバが一致しなかった。CryptEncodeはzipファイルをより短くするので、間接的にあなたの説を裏付けることになるのです

理屈じゃなくて、アーカイブスで全部用意するのに慣れているんだと思うんです。

私は愚かにも、普通のアーカイバで作ったファイルを解凍してくれるものと思っていました。

 

問題は、私は通常のZIPアーカイブでCryptEncodeによって与えられたバイト配列の発生を見つけることができないことです。

ファイルは同じものです。したがって、古典的な zip アーカイブでは、CryptEncode バイト配列に対応するバイト配列が存在するはずです。

 
C-4:

問題は、通常のzipアーカイブでCryptEncodeによって与えられたバイト配列の発生を見つけることができないことです。

)だから、見方が間違っている。
理由: