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