CRYPT_ARCH_ZIP 수정자가 있는 CryptDecode - 사용 방법은 무엇입니까? - 페이지 4

 
sanyooooook :
글쎄요, 그는 그렇게 하고 일반 아카이버 이후에 일어나는 일과 비교합니다.

그래서 문제가 무엇입니까?

CryptEncode() 에 의해 생성된 ZIP이 디코딩되면 무엇이 잘못되었는지 명확하지 않습니까?

 

MQ에는 고유한 형식이 있습니다!

   string file_name = "GAZR-6.15.dat" ;
   uchar array[];
   uchar key[];
   uchar result[];
   int a_handle = FileOpen ( file_name, FILE_READ | FILE_BIN );
   if ( a_handle != INVALID_HANDLE )
   {
     uint array_size = FileReadArray ( a_handle, array );
     if ( array_size > 0 )
     {
       ArrayResize ( key, array_size );
       for ( int i = 0 ; i < int ( array_size ); i++ ) key[i] = 0 ;
       int a_enc = CryptEncode( CRYPT_ARCH_ZIP, array, key, result );
       int b_handle = FileOpen ( "test.zip" , FILE_WRITE | FILE_BIN );
       if ( b_handle != INVALID_HANDLE )
       {
         FileWriteArray ( b_handle, result );
         FileClose ( b_handle );
       }  
       FileClose ( a_handle );
     }  
   }
   
   
   
   
   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 ;
     //ArrayResize( result, array_size, array_size * 100 );
     
     ResetLastError ();
     int d = CryptDecode( CRYPT_ARCH_ZIP, array, key, result );
   
     if ( d < 1 )
     {
       Print ( GetLastError () );
     } 
   }

MQL5에서 아카이브를 생성하면 모든 것이 작동합니다.

그러나 이 아카이브는 표준 ZIP으로 압축을 풀 수 없습니다!!!

 
Mikalas :

MQ에는 고유한 형식이 있습니다!

MQL5에서 아카이브를 생성하면 모든 것이 작동합니다.

그러나 이 아카이브는 표준 ZIP으로 압축을 풀 수 없습니다!!!

Michael, Alexander의 게시물을 주의 깊게 읽으십시오.

산요우우우우우우우우우우우우우우우우우우우 :

ZIP 아카이브는 전체 구조인 반면 기능은 어레이를 아카이브/압축 해제합니다. 아카이브를 취소할 준비가 된 어레이를 거기에 놓기만 하면 됩니다.

대략적으로 말하면 아카이브 기능의 출력에서 얻은 것만 압축을 풉니다.


저것들. MQ의 독점 형식은 없습니다. CryptEncode 함수 가 제공하는 것은 zip 아카이브의 일부일 뿐이며 나머지는 직접 생성해야 합니다. 그러나 문제는 표준 zip 아카이버와 CryptEncode 사이의 아카이브 부분조차도 일치하지 않는다는 것입니다.

일반적으로 우리는 월요일을 기다리고 있습니다. MQ만이 우리에게 부족한 정보를 줄 수 있습니다.

 
C-4 :

Michael, Alexander의 게시물을 주의 깊게 읽으십시오.


저것들. MQ의 독점 형식은 없습니다. CryptEncode 함수가 제공하는 것은 zip 아카이브의 일부일 뿐이며 나머지는 직접 생성해야 합니다. 그러나 문제는 표준 zip 아카이버와 CryptEncode 사이의 아카이브 부분조차도 일치하지 않는다는 것입니다.

일반적으로 우리는 월요일을 기다리고 있습니다. MQ만이 우리에게 부족한 정보를 줄 수 있습니다.

따라서 헤더를 건너뛰고 데이터만 읽으십시오!

Google = PKWare 데이터 압축 라이브러리 헤더

 
Mikalas :

그래서 문제가 무엇입니까?

CryptEncode()에 의해 생성된 ZIP이 디코딩되면 무엇이 잘못되었는지 명확하지 않습니까?

CryptoDecode 이후에 얻은 것과 일반 아카이버 이후에 얻은 것의 구조가 다릅니다.
 

여기에서 몇 가지 실험을 했습니다.

파일: 빠른 갈색 여우 게으른 개를 뛰어 넘습니다. 빠른 갈색 여우가 게으른 개를 뛰어 넘습니다.

파일: 빠른 갈색 여우 게으른 개를 뛰어 넘습니다.

파일: sdfgghjdfggfghjghghjk,g

 
MQ에는 자체 출력 구조가 있습니다.
 

바실리!

MQL5는 헤더 없이 ZIP을 생성합니다!

따라서 읽을 때 건너 뛰지 마십시오.

Google = PKWare 데이터 압축 라이브러리 헤더

http://en.wikipedia.org/wiki/Zip_(파일 형식)

MQ에는 하나의 압축 방법만 있으므로

ZIP이 다른 방법으로 되어 있으면 압축을 풀 수 없습니다.

즉, 모든 ZIP 아카이브를 사용할 수 있는 것은 아닙니다!

 
sanyooooook :
MQ에는 자체 출력 구조가 있습니다.

그녀는 "자신의 것"이 될 수 없습니다. 그렇지 않으면 ZIP과 전혀 관련이 없습니다.

압축 데이터 구조는 압축 정도에 따라 다르며 다를 수 없습니다. 따라서 CryptDecode 는 특정 압축 비율 및 기타 필요한 매개변수를 설명하는 키로 어떻게든 제어해야 합니다. MQ만 키를 올바르게 구성하는 방법을 알고 있습니다.

미칼라스 :

바실리!

MQL5는 헤더 없이 ZIP을 생성합니다!

마이클, 당신은 내가 말하는 것을 이해해야 합니다. 문제는 헤더가 아니라 파일 형식에 있습니다. 스레드를주의 깊게 읽으십시오.

 
C-4 :

"자체"일 수 없습니다. 그렇지 않으면 ZIP과 전혀 관련이 없습니다.

압축 데이터 구조는 압축 정도에 따라 다르며 다를 수 없습니다. 따라서 CryptDecode는 특정 압축 비율 및 기타 매개변수를 설명하는 키로 어떻게든 제어해야 합니다. MQ만 키를 올바르게 구성하는 방법을 알고 있습니다.

마이클, 당신은 내가 말하는 것을 이해해야 합니다. 문제는 헤더가 아니라 파일 형식에 있습니다. 스레드를주의 깊게 읽으십시오.

그런 다음 원하는 것을 정확히 명시하십시오.

주제의 시작 부분에 코드가 있습니다.

아카이브 전체 를 읽고 있으며 헤더 와 함께 아카이브를 디코딩하려고 합니다!

표준 패커에 의해 생성된 모든 ZIP 아카이브에는 헤더가 있습니다!

MQL5 언패커는 .

따라서 데이터의 압축을 풀 수 없습니다.

그래서 설명:

처음에 무엇이 필요합니까?