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() 関数が呼ばれます。

例:

//+------------------------------------------------------------------+
//| ArrayToHex                                                       |
//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
 {
  string res="";
//--- チェック
  if(count<0 || count>ArraySize(arr))
     count=ArraySize(arr);
//--- 16 進文字列に変換する
  for(int i=0; i<count; i++)
     res+=StringFormat("%.2X",arr[i]);
//---
  return(res);
 }
//+------------------------------------------------------------------+
//| スクリプトプログラムを開始する関数                                          |
//+------------------------------------------------------------------+
void OnStart()
 {
  string text="The quick brown fox jumps over the lazy dog";
  string keystr="ABCDEFG";
  uchar src[],dst[],key[];
//--- キーを準備する
  StringToCharArray(keystr,key);
//--- テキストを元の配列 src[] に複製する
  StringToCharArray(text,src);
//--- 初期データをプリントする
  PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- src[] を key[] のDES 56-ビットキーを使用して暗号化する
  int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- エラーをチェックする
  if(res>0)
    {
    //--- 暗号化されたデータをプリントする
    PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
    //--- dst[] を src[] にデコードする
     res=CryptDecode(CRYPT_DES,dst,key,src);
    //--- エラーをチェックする   
    if(res>0)
       {
        //--- デコードされたデータをプリントする
        PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
       }
    else
        Print("Error in CryptDecode. Error code=",GetLastError());
    }
  else
    Print("Error in CryptEncode. Error code=",GetLastError());
 }

参照

配列関数CryptDecode()