暗号化データを復元 CryptDecode 関数

関数

共通関数

CryptDecode 関数

 この関数は、CryptEncode関数によって暗号化されたデータを復元(デコード)して、復元した時のデータの大きさ(byte)を取得します。

 復元する時は、暗号化した時の方法と暗号化キーは同じものを使用する必要があります。

データ型と構成・戻り値

int CryptDecode(①,②,③,④);

 戻り値は、引数④(復元した配列)の大きさ(byte)を返します。
 発生するエラーについては、GetLastError関数で取得することができます。

引数 [4]

 CryptDecode関数は 4個の引数で構成されます。


引数名データ型単位初期値説明
methodenumデータ変換方法(暗号化方法)。ENUM_CRYPT_METHOD 列挙値から選択。CryptEncode関数で暗号化したときと同じ識別子を選択してください。
data[]const uchar&CryptEncode関数で暗号化された配列データ。
keyconst uchar&暗号化キー。CryptEncode関数で暗号化したときと同じ暗号化キーを使用してください。
resultuchar&復元した配列データ。

使用例

CryptDecode関数による暗号化した配列データの復元

 CryptEncode関数で暗号化した配列データを CryptDecode関数を用いて復元します。復元は、CryptEncode関数で暗号化した時と同じ暗号化方法、同じ暗号化キーを使用します。

コード

// CryptDecode関数による配列データの暗号化
#property strict
void OnInit() {

   string test = "テスト";                             // 変換元データ
   string skey = "1234567";                            // 暗号化キー
   uchar arr1[];                                       // 変換前の配列
   uchar arr2[];                                       // キー配列
   uchar arr3[];                                       // 変換後の配列
   int   size;                                         // サイズ(byte)
       
   StringToCharArray(test, arr1);                      // 変換前の配列に変換元データを挿入
   StringToCharArray(skey, arr2);                      // キー配列に暗号化キーを挿入
   
   Print("①変換前データ サイズ:", ArraySize(arr1), " 変換前の配列:", CharArrayToString(arr1));
   
   size = CryptEncode(CRYPT_DES, arr1, arr2, arr3);    // エンコード実行
   
   if(size>0) {
      Print("②変換後データ サイズ:", size, " 変換後の配列:", change16(arr3));
      
      ArrayFree(arr1);                                 // 変換前の配列を初期化
      size = CryptDecode(CRYPT_DES, arr3, arr2, arr1); // デコード実行
      
      Print("③復元データ  サイズ:", size, " 変換後の配列:", CharArrayToString(arr1));
   } else {
      Print("エンコード出来ませんでした");
   }
}

string change16(uchar &arr3[]) {                       // 16進数に変換する関数
   string a;
   int c = ArraySize(arr3);
   
   for(int i=0; i < c; i++) {
      a = a + StringFormat("%.2X", arr3[i]);
   }
   return(a);
}

コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)

結果

タイトルとURLをコピーしました