CryptEncode

Convierte los datos del array fuente en el array receptor según el método especificado.

int  CryptEncode(
   ENUM_CRYPT_METHOD   method,        // método de conversión
   const uchar&        data[],        // array fuente
   const uchar&        key[],         // clave de cifrado
   uchar&              result[]       // array receptor
   );

Parámetros

method

[in]  Método de conversión. Puede ser uno de los valores de la enumeración ENUM_CRYPT_METHOD.

data[]

[in]  Array fuente.

key[]

[in]  Clave de cifrado.

result[]

[out]  Array receptor.

Valor devuelto

Número de bytes en el array receptor, o 0 en caso del error. Para obtener la información adicional sobre el error, hay que llamar a la función GetLastError().

Ejemplo:

//+------------------------------------------------------------------+
//| ArrayToHex                                                       |
//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
  {
   string res="";
//--- comprobar tamaño
   if(count<0 || count>ArraySize(arr))
      count=ArraySize(arr);
//--- conversión en la cadena de 16 dígitos
   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[];
//--- Preparación de la clave de cifrado
   StringToCharArray(keystr,key);
//--- preparación del array de salida src[]
   StringToCharArray(text,src);
//--- mostrar datos de salida
   PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- cifrado del array src[] usando el método DES con la clave de 56 bits key[]
   int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- comprobación de los resultados del cifrado
   if(res>0)
     {
      //--- mostrar los dados cifrados
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
      //--- decodificación de los datos del array dst[] usando el método DES con la clave de 56 bits key[]
      res=CryptDecode(CRYPT_DES,dst,key,src);
     //--- comprobación del resultado
      if(res>0)
        {
         //--- mostrar datos decodificados
         PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
        }
      else
         Print("Error en CryptDecode. Número del error=",GetLastError());
     }
   else
      Print("Error en CryptEncode. Número del error=",GetLastError());
  }

Véase también

Operaciones con arrays, CryptDecode()