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

 
Mikalas:

Vasiliy!

档案不是坏了吗?

不,不是的。由我个人通过7zip制作,用于测试。

三亚正确地注意到:CryptDecode 只解码档案的压缩部分,但如何让它解码这个压缩部分仍然是个谜。

 

上传

7zip和普通zip

也许7zip不被支持?

 
Mikalas:

上传

7zip和只是压缩

打包器是7zip,存档是zip。其他包装商也给出了同样的结果。你可以自己检查。取任何文件,用任何压缩包打包。尝试用CrypеDecode解压所得到的档案(.zip)。- 我们将得到一个解包错误。但问题甚至不在于解压整个档案的错误,问题是如何配置CryptDecode,使其能够从压缩档案中解压打包的分区。
 
C-4:
打包器是7zip,存档是zip。其他包装商也给出了同样的结果。你可以自己检查一下。采取任何文件,用任何压缩包进行包装。尝试用CrypеDecode解压所得到的档案(.zip)。- 我们将得到一个解包错误。但问题甚至不在于解压整个档案的错误,问题是如何配置CryptDecode,使其能够从压缩档案中解压打包的分区。

:)

你的文件打不开!

转到

if ( handle != INVALID_HANDLE )
 
C-4:
问题:如何配置CryptDecode,使其能够从压缩档案中解压一个打包的分区。

可能有助于

http://blog2k.ru/archives/3392

Чтение ZIP файла
  • 2014.06.04
  • Евгений Жирнов (jirnov@gmail.com)
  • blog2k.ru
Алгоритм получения данных из ZIP файла: находим запись EOCDзагружаем записи Central directory file headerдля каждой Central directory file header, находим и загружаем Local File Headerданные располагаются сразу после Local File Header, иногда размер данных записывается после самих данных в структуру Data descriptor, об этом сигнализирует флаг...
 

Vasiliy!

你没做对,但也没做对 :(

意外的内部错误。

uchar array[];
   uchar key[];
   uchar result[];
   int handle = FileOpen( "test.zip", FILE_READ|FILE_BIN );
   if ( handle != INVALID_HANDLE )
   {
     uint array_size = FileReadArray( handle, array );
     FileClose( handle );
     
     Print( "Read totals: ", array_size );
     ArrayResize( key, array_size );
     for ( int i = 0; i < int( array_size ); i++ ) key[i] = 0;
     ResetLastError();
     int d = CryptDecode( CRYPT_ARCH_ZIP, array, key, result );
   
    if ( d < 1 )
     {
       Print( GetLastError() );
     } 
   }
 
Mikalas:

Vasiliy!

你没有做对,但也没有用 :(

我做对了。文件打不开,因为它应该在COMMON目录下,这对我来说更方便。

Key[]不一定要与源的大小相匹配。

sanyooooook:

可能有助于

http://blog2k.ru/archives/3392

我不能投资开发一个读取zip的类,除非我手头有文档,并且确信CryptDecode函数会正确解压压缩数组。处理一个压缩文件的结构是一个微不足道的任务。我需要确切地了解为什么正则拉链的打包数据与CryptDecode()的打包数据不一致。换句话说,你需要确切了解为什么两个文件的黄色部分不匹配。

 

并尝试用CryptEncode() 创建一个ZIP。

也许MQ使用他们自己的加密方法,类似于ZIP

 
Mikalas:

并尝试用CryptEncode() 创建一个ZIP。

也许MQ使用他们自己的加密方法,类似于ZIP

好吧,它是这样做的,然后它将其与常规存档器的输出进行比较
 
C-4:

我不能投资开发一个读取Zip的类,除非我有文档并相信CryptDecode函数会正确解压压缩数组。处理一个压缩文件的结构是一项微不足道的任务。我需要了解的是,为什么正则拉链的打包数据与CryptDecode()的打包数据不一致。换句话说,你需要确切了解为什么两个文件的黄色部分不匹配。

等待MQ的答复可能会更快 )