带有修改器CRYPT_ARCH_ZIP的CryptDecode - 如何使用?

 

实际问题是这样的。根据我的理解,我们正在谈论打包/拆包的拉链阵列。这是一个巨大的有用的东西,但我不能使用它,CryptDecode函数在测试压缩文件时顽固地给出了零结果。

//+------------------------------------------------------------------+
//| 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 - 意外的内部错误。

 
C-4:

实际的问题是关于副标题的。根据我的理解,我们正在谈论打包/拆包的拉链阵列。这是一个巨大的有用的东西,但我不能使用它,CryptDecode函数在测试压缩文件时顽固地给出了零结果。

也许应该指定其他东西作为密钥,或者我对CRYPT_ARCH_ZIP修改器的值有错误的想法。无论如何,文档中没有包含该函数的例子,这使得我们很难理解它是如何工作的。GetLastError函数 写的是4001 - 意外的内部错误。

错误的做法
 
sanyooooook:
不对的方法
如果可以的话,请提供更多细节。
 

一个ZIP档案是一个整体结构,但该函数归档/解档的是一个数组,也就是说,只有准备解档的数组才能放在这里。

粗略地说,它只对归档功能的输出进行解档。

 
C-4:
如果可以的话,请提供更多细节。
或什么在
link.zip
已由存档功能创建?
 
sanyooooook:

一个ZIP档案是一个整体结构,但该函数归档/解档的是一个数组,也就是说,只有准备解档的数组才能放在这里。

粗略地说,它只对归档功能的输出进行解档。

明白了。MQ风格。不过最主要的是解密压缩文件。难道没有人碰巧有一个在MQL中处理压缩文件的库吗?
 
sanyooooook:
或者在 ,由存档功能创建的是什么?
不,它说的是零。CryptDecode 对拉链进行解码。试着创建一个压缩档案--CryptEncode的反应与普通存档器的反应不一致。CryptEncode的压缩文件要短得多,这间接证实了你的理论!
 
这里有一个文件结构的描述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对拉链进行解码。我试图创建一个压缩文件,CryptEncode和普通的存档器不匹配。CryptEncode使压缩文件变得更短,这间接地证实了你的理论!

这不是一个理论,只是他们习惯于在存档器中准备好一切。

我愚蠢地以为它能解开用普通存档器制作的文件。

 

问题是,我在普通的压缩文件中找不到CryptEncode给出的字节数组的出现。

文件是一样的。所以在一个经典的压缩文件中,应该有一个与CryptEncode字节阵列相对应的字节阵列

 
C-4:

问题是,我无法在普通的压缩文件中找到CryptEncode给出的字节数组的出现。

),所以你看错方向了。