Русский

Справочник MQL4 Общие функции CryptEncode

CryptEncode

Преобразует данные массива-источника в массив-приемник указанным методом.

int  CryptEncode(
   ENUM_CRYPT_METHOD   method,        // метод преобразования
   const uchar&        data[],        // массив-источник
   const uchar&        key[],         // ключ шифрования
   uchar&             result[]       // массив-приемник
   );

Параметры

method

[in]  Метод преобразования. Может быть одним из значений перечисления ENUM_CRYPT_METHOD.

data[]

[in]  Массив-источник.

key[]

[in]  Ключ шифрования.

result[]

[out]  Массив-приемник.

Возвращаемое значение

Количество байт в массиве-приемнике или 0 в случае ошибки. Чтобы получить дополнительную информацию об ошибке, необходимо вызвать функцию GetLastError().

Пример:

//+------------------------------------------------------------------+
//| ArrayToHex                                                       |
//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
  {
   string res="";
//--- проверка размера
   if(count<0 || count>ArraySize(arr))
      count=ArraySize(arr);
//--- преобразование в шестнадцатиричную строку
   for(int i=0; i<count; i++)
      res+=StringFormat("%.2X",arr[i]);
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string text="The quick brown fox jumps over the lazy dog";
   string keystr="ABCDEFG";
   uchar src[],dst[],key[];
//--- подготовка ключа шифрования
   StringToCharArray(keystr,key);
//--- подготовка исходного массива src[]
   StringToCharArray(text,src);
//--- вывод исходных данных
   PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- шифрование массива src[] методом DES с 56-битным ключом key[]
   int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- проверка результата шифрования
   if(res>0)
     {
      //--- вывод шифрованных данных
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
      //--- расшифровка данных массива dst[] методом DES с 56-битным ключом key[]
      res=CryptDecode(CRYPT_DES,dst,key,src);
      //--- проверка результата
      if(res>0)
        {
         //--- вывод дешифрованных данных
         PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
        }
      else
         Print("Ошибка в CryptDecode. Код ошибки=",GetLastError());
     }
   else
      Print("Ошибка в CryptEncode. Код ошибки=",GetLastError());
  }

Смотри также

Операции с массивами, CryptDecode()