CryptDecode

执行数组数据逆转换,通过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() 函数。

示例:

input string InpKey = "ABCDEFG";  // 加密密钥
 
//+------------------------------------------------------------------+
//| 脚本程序起始函数                                                   |
//+------------------------------------------------------------------+
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));
 
//--- 使用DES方法加密src[]数组,key[]为56位密钥
   int res=CryptEncode(CRYPT_DES,src,key,dst);
 
//--- 检查加密结果
   if(res>0)
     {
      //--- 显示加密数据
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
      //--- 使用DES方法解密dst[]数组数据,key[]为56位密钥
      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);
 
//--- 转到hexadecimal字符串
   for(int i=0i<counti++)
      res+=StringFormat("%.2X",arr[i]);
 
   return(res);
  }

另见

数组函数CryptEncode()