CryptDecode

Esegue la trasformazione inversa dei dati dall'array, tranformata da CryptEncode().

int  CryptEncode(
   ENUM_CRYPT_METHOD   method,        // metodo
   const uchar&        data[],        // array sorgente
   const uchar&        key[],         // chiave
   uchar&              result[]       // array di destinazione
   );

Parametri

method

[in] Metodo di trasformazione dei dati. Può essere uno dei valori dell'enumerazione ENUM_CRYPT_METHOD.

data[]

[in] Array sorgente.

key[]

[in] Chiave dell'array.

result[]

[out] Array di destinazione.

Valore restituito

Quantità di byte nell'array di destinazione o 0 in caso di errore. Per ottenere informazioni sull'errore chiamare la funzione GetLastError().

Esempio:

input string InpKey = "ABCDEFG";  // Encryption key
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string text="The quick brown fox jumps over the lazy dog";
   uchar src[],dst[],key[];
 
//-- preparare la chiave di cifratura
   StringToCharArray(InpKey,key);
//--- preparare l'array sorgente src[]
   StringToCharArray(text,src);
//-- visualizzare i dati della sorgente
   PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
 
//--- cifra l'array src[] usando il metodo DES con la chiave key[] 56 bit
   int res=CryptEncode(CRYPT_DES,src,key,dst);
 
//-- controlla il risultato della cifratura
   if(res>0)
     {
      //--- visualizzare i dati cifrati
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
 //-- decifrare i dati dell'array dst[] usando il metodo DES con la chiave key[] a 56 bit
      res=CryptDecode(CRYPT_DES,dst,key,src);
 //-- controlla il risultato
      if(res>0)
        {
 //-- visualizza i dati decifrati
         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="";
 
//-- controllare la dimensione
   if(count<0 || count>ArraySize(arr))
      count=ArraySize(arr);
 
//--- convertire in stringa esadecimale
   for(int i=0i<counti++)
      res+=StringFormat("%.2X",arr[i]);
 
   return(res);
  }

Vedere anche

Array Functions, CryptEncode()