CryptDecode

CryptEncode()에 의 해 변환된 배열에서 데이터의 역 변환을 수행.

int  CryptEncode(
   ENUM_CRYPT_METHOD   method,        // 메서드
   const uchar&        data[],        // 소스 배열
   const uchar&        key[],         // 키
   uchar&              result[]       // 대상 배열
   );

매개변수

메서드

[in]  데이터 변환 메서드. ENUM_CRYPT_METHOD 열거 값 중 하나일 수 있습니다.

data[]

[in]  소스 배열.

key[]

[in]  키 배열.

result[]

[out]  대상 배열.

값 반환

대상 배열의 바이트 양 또는 오류의 경우 0. 오류에 대한 정보를 얻으려면 GetLastError() 기능을 호출.

예:

input string InpKey = "ABCDEFG";  // 암호화 키
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string text="The quick brown fox jumps over the lazy dog";
   uchar src[],dst[],key[];
 
//--- 암호화 키 준비
   StringToCharArray(InpKey,key);
//--- src[] 소스 배열 준비
   StringToCharArray(text,src);
//--- 소스 데이터 표시
   PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
 
//--- key[] 56비트 키를 사용하여 DES 메서드를 사용하여 src[] 배열을 암호화합니다.
   int res=CryptEncode(CRYPT_DES,src,key,dst);
 
//--- 암호화 결과 확인
   if(res>0)
     {
      //--- 암호화된 데이터 표시
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
      //--- key[] 56비트 키를 사용하여 DES 메서드를 사용하여 dst[] 배열 데이터를 해독합니다.
      res=CryptDecode(CRYPT_DES,dst,key,src);
      //--- 결과 확인
      if(res>0)
        {
         //--- 복호화된 데이터 표시
         PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
        }
      else
         Print("CryptDecode failed. Error: ",GetLastError());
     }
   else
      Print("CryptEncode failed. Error: ",GetLastError());
  }
//+------------------------------------------------------------------+
//| ArrayToHex                                                       |
//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
  {
   string res="";
 
//--- 크기 확인
   if(count<0 || count>ArraySize(arr))
      count=ArraySize(arr);
 
//--- 16진수 문자열로 변환
   for(int i=0i<counti++)
      res+=StringFormat("%.2X",arr[i]);
 
   return(res);
  }

추가 참조

문자열 기, CryptEncode()