CryptDecode

Effectue la transformation inverse des données du tableau, transformées par CryptEncode().

int  CryptEncode(
   ENUM_CRYPT_METHOD   method,        // méthode
   const uchar&        data[],        // tableau source
   const uchar&        key[],         // clé
   uchar&              result[]       // tableau destination
   );

Paramètres

method

[in]  Méthode de transformation des données. Peut être l'une des valeurs de l'énumération ENUM_CRYPT_METHOD.

data[]

[in]  Tableau source.

key[]

[in]  Clé.

result[]

[out]  Tableau destination.

Valeur de Retour

Nombre d'octets dans le tableau de destination ou 0 en cas d'erreur. Pour obtenir des informations sur l'erreur, appelez la fonction GetLastError().

Exemple :

input string InpKey = "ABCDEFG";  // Clé de cryptage
 
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   string text="The quick brown fox jumps over the lazy dog";
   uchar src[],dst[],key[];
 
//--- prépare la clé de cryptage
   StringToCharArray(InpKey,key);
//--- prépare the la tableau source src[]
   StringToCharArray(text,src);
//--- affiche les données source
   PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
 
//--- encrypte le tableau src[] avec la méthode DES avec la clé key[] sur 56 bits
   int res=CryptEncode(CRYPT_DES,src,key,dst);
 
//--- vérifie le résultat du cryptage
   if(res>0)
     {
      //--- affiche les données encryptées
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
      //--- décrypte le tableau dst[] avec la méthode DES et la clé key[] sur 56 bits
      res=CryptDecode(CRYPT_DES,dst,key,src);
      //--- vérification du résultat
      if(res>0)
        {
         //--- affiche les données décryptées
         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="";
 
//--- vérification de la taille
   if(count<0 || count>ArraySize(arr))
      count=ArraySize(arr);
 
//--- conversion en chaîne hexadécimale
   for(int i=0i<counti++)
      res+=StringFormat("%.2X",arr[i]);
 
   return(res);
  }

Voir aussi

Fonctions sur les Tableaux, CryptEncode()