CryptDecode with modifier CRYPT_ARCH_ZIP - How to use? - ページ 3

 
Mikalas:

バシリー!

アーカイブが壊れているのでは?

いいえ、そんなことはありません。テスト用に7zipで個人的に作りました。

CryptDecodeは アーカイブの圧縮部分のみをデコードしますが、この圧縮部分をどのようにデコードさせるかは謎のままです。

 

アップロード

7zipとplain zip

もしかしたら7zipはサポートされていないかもしれません。

 
Mikalas:

アップロード

7zipとジャストジップ

パッカーは7zip、アーカイブはzipです。他のパッカーも同じような結果を出しています。ご自身で確認することができます。任意のファイルを取り出し、任意のZIPパッカーで梱包します。出来上がったアーカイブ(.zip)をCrypеDecodeで解凍してみてください。- アンパッキングエラーが出ます。しかし、問題はアーカイブ全体の解凍のエラーについてでさえなく、問題はCryptDecodeが ZIPアーカイブからパックされたパーティションを解凍できるように設定する方法です。
 
C-4:
パッカーは7zip、アーカイブはzipです。他のパッカーも同じような結果を出しています。自分で確認することができます。任意のファイルを取り出し、任意のZIPパッカーで梱包することができます。出来上がったアーカイブ(.zip)をCrypеDecodeで解凍してみてください。- アンパッキングエラーが出ます。しかし、問題はアーカイブ全体の解凍のエラーについてでさえなく、問題はCryptDecodeがZIPアーカイブからパックされたパーティションを解凍できるように設定する方法です。

:)

ファイルが開きません

出向く

if ( handle != INVALID_HANDLE )
 
C-4:
zip アーカイブから packed パーティションを展開できるように 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, об этом сигнализирует флаг...
 

バシリー!

ちゃんとやってないのに、ちゃんと動かない :(

予期せぬ内部エラーです。

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:

バシリー!

ちゃんとやってないのに、効果もない :(

ちゃんとやりましたよ。COMMONディレクトリにあるはずのファイルが開かない、その方が便利なんだけど。

Key[]はソースサイズと一致する必要はありません。

サンユウク

かもしれない

http://blog2k.ru/archives/3392

手元にドキュメントがあり、CryptDecode関数が圧縮された配列を適切に解凍してくれると確信できない限り、zipを読むクラスの開発に投資することはできない。ZIPファイルの構造を扱うのは些細なことです。私が理解しなければならないのは、通常のZIPのパックされたデータが、CryptDecode()のパックと一致しない理由です。つまり、2つのファイルの黄色い部分がなぜ一致しないのかを正確に把握する必要があるのです。

 

そして、CryptEncode() でZIPを作成してみてください。

MQはZIPのような独自の暗号化方式を採用しているのかもしれません。

 
Mikalas:

そして、CryptEncode() でZIPを作成してみてください。

MQはZIPのような独自の暗号化方式を採用しているのかもしれません。

の出力と比較します。
 
C-4:

CryptDecode関数が圧縮された配列を適切に解凍するという文書と確信がない限り、Zipを読むクラスの開発に投資することはできないのです。ZIPファイルの構造を扱うのは些細なことです。つまり、なぜ通常のzipのpackedデータとCryptDecode()のpackedデータが一致しないのかを正確に把握する必要があるのです。つまり、2つのファイルの黄色い部分がなぜ一致しないのかを正確に把握する必要があるのです。

MQからの回答を待つ方が早いかもしれません )
理由: