CRYPT_ARCH_ZIP değiştiricili CryptDecode - Nasıl kullanılır?

 

Aslında bir konuda bir soru. Anladığım kadarıyla, bir zip dizisini paketlemek/açmaktan bahsediyoruz. Bu çok kullanışlı bir şey ama ben kullanmayı beceremedim, CryptDecode işlevi inatla test zip arşivinde sıfır veriyor:

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

Belki başka bir şeyin anahtar olarak belirtilmesi gerekiyor ya da CRYPT_ARCH_ZIP değiştiricisinin değerini doğru anlamıyorum. Her halükarda, dokümantasyondaki fonksiyonla çalışma örneği yoktur, bu da onun nasıl çalıştığına dair anlayışını önemli ölçüde karmaşıklaştırır. GetLastError işlevi 4001 - Beklenmeyen dahili hata yazıyor.

 
C-4 :

Aslında bir konuda bir soru. Anladığım kadarıyla, bir zip dizisini paketlemek/açmaktan bahsediyoruz. Bu çok kullanışlı bir şey ama ben kullanmayı beceremedim, CryptDecode işlevi inatla test zip arşivinde sıfır veriyor:

Belki başka bir şeyin anahtar olarak belirtilmesi gerekiyor ya da CRYPT_ARCH_ZIP değiştiricisinin anlamını doğru anlamıyorum. Her halükarda, dokümantasyondaki fonksiyonla çalışma örneği yoktur, bu da onun nasıl çalıştığına dair anlayışını önemli ölçüde karmaşıklaştırır.GetLastError işlevi 4001 - Beklenmeyen dahili hata yazıyor.

yanlış yaklaşım
 
sanyooooook :
yanlış yaklaşım
Mümkünse daha fazla ayrıntı.
 

Bir ZIP arşivi bütün bir yapıdır, işlev ise diziyi arşivler / sıkıştırır, yani. Sadece orada arşivden çıkarmaya hazır bir dizi koymanız gerekir.

Kabaca söylemek gerekirse, yalnızca arşivleme işlevinin çıktısında elde edilenleri açar.

 
C-4 :
Mümkünse daha fazla ayrıntı.
ya da içinde ne var
 link.zip
arşivleme işlevi tarafından mı oluşturuldu?
 
sanyooooook :

Bir ZIP arşivi bütün bir yapıdır, işlev ise diziyi arşivler / sıkıştırır, yani. Sadece orada arşivden çıkarmaya hazır bir dizi koymanız gerekir.

Kabaca söylemek gerekirse, yalnızca arşivleme işlevinin çıktısında elde edilenleri açar.

Açık. MQ stili. Ana şey olmasına rağmen - şifre çözme zip'a. MQL'de zip arşivleriyle çalışmak için bir kitaplığı olan var mı?
 
sanyooooook :
ya da içinde ne var
arşivleme işlevi tarafından mı oluşturuldu?
Hayır, sıfır yazıyor. CryptDecode, zip'in kodunu çözer. Zip arşivi oluşturmaya çalıştım - CryptEncode yanıtları standart arşivleyicilerle eşleşmiyor. CryptEncode ile arşivlenen dosya çok daha kısadır, bu da dolaylı olarak teorinizi doğrular!
 
burada dosya yapısının bir açıklaması var 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 :
Hayır, sıfır yazıyor. CryptDecode, zip'in kodunu çözer. Zip arşivi oluşturmaya çalıştım - CryptEncode yanıtları standart arşivleyicilerle eşleşmiyor. CryptEncode ile arşivlenen dosya çok daha kısadır, bu da dolaylı olarak teorinizi doğrular!

bu bir teori değil, bu böyle, arşivde her şeyin hazır olmasına yeni alıştık,

Ayrıca aptalca bir şekilde normal bir arşivleyici tarafından oluşturulan dosyaları açacağını düşündüm.

 

Sorun şu ki, normal bir zip arşivinde CryptEncode tarafından verilen bayt dizisinin herhangi bir örneğini bulamıyorum.

Dosya aynı. Yani klasik zip arşivinde CryptEncode işlevi tarafından verilen bayt koduna karşılık gelen bir bölüm olmalıdır.

 
C-4 :

Sorun şu ki, normal bir zip arşivinde CryptEncode tarafından verilen bayt dizisinin herhangi bir örneğini bulamıyorum.

), aradığınız şey bu değil.