CryptEncode

Wandelt Daten eines Quell-Arrays in ein Empfänger-Array anhand der angegebenen Methode um.

int  CryptEncode(
   ENUM_CRYPT_METHOD   method,        // Umwandlungsmethode
   const uchar&        data[],        // Quell-Array
   const uchar&        key[],         // Schlüssel
   uchar&              result[]       // Empfänger-Array
   );

Parameter

method

[in]  Umwandlungsmethode. Kann einer der Werte der ENUM_CRYPT_METHOD sein.

data[]

[in]  Quell-Array.

key[]

[in]  Schlüssel.

result[]

[out]  Empfänger-Array.

Gelieferter Wert

Anzahl der Bytes im Empfänger-Array oder 0 im Fehlerfall. Um zusätzliche Informationen über den Fehler zu bekommen, muss man die Funktion GetLastError() aufrufen.

Beispiel:

//+------------------------------------------------------------------
//| ArrayToHex                                                       |
//+------------------------------------------------------------------
string ArrayToHex(uchar &arr[],int count=-1)
  {
   string res="";
//--- Größe überprüfen
   if(count<0 || count>ArraySize(arr))
      count=ArraySize(arr);
//--- Umwandlung in eine hexadezimale Zeile
   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[];
//--- Schlüssel vorbereiten
   StringToCharArray(keystr,key);
//--- Quell-Array src[] vorbereiten
   StringToCharArray(text,src);
//--- Ausgangsdaten anzeigen
   PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- Verschlüsselung des Arrays src[] anhand DES mit einem 56-Bit-Schlüssel key[]
   int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- das Ergebnis der Verschlüsselung überprüfen
   if(res>0)
     {
      //--- verschlüsselte Daten ausgeben
      PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
      //--- Entschlüsselung der Daten des Arrays dst[] anhand der Methode DES mit einem 56-Bit-Schlüssel key[]
      res=CryptDecode(CRYPT_DES,dst,key,src);
     //--- Ergebnis überprüfen
      if(res>0)
        {
         //--- entschlüsselte Daten anzeigen
         PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
        }
      else
         Print("Fehler in CryptDecode. Fehlercode=",GetLastError());
     }
   else
      Print("Fehler in CryptEncode. Fehlercode=",GetLastError());
  }

Sieh auch

Operationen mit Arrays, CryptDecode()