CryptDecode 関数
この関数は、CryptEncode関数によって暗号化されたデータを復元 (デコード) して、復元した時のデータの大きさ (byte) を取得します。
復元する時は、暗号化した時の方法と暗号化キーは同じものを使用する必要があります。
データ型と構成・戻り値
int CryptDecode(①, ②, ③, ④);
戻り値は、引数④ (復元した配列) の大きさ (byte) を返します。
発生するエラーについては、GetLastError関数で取得することができます。
引数 [4]
CryptDecode関数は 4個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | method | enum | - | - | データ変換方法(暗号化方法)。ENUM_CRYPT_METHOD 列挙値から選択。CryptEncode関数で暗号化したときと同じ識別子を選択してください。 |
② | data[] | const uchar& | - | - | CryptEncode関数で暗号化された配列データ。 |
③ | key | const uchar& | - | - | 暗号化キー。CryptEncode関数で暗号化したときと同じ暗号化キーを使用してください。 |
④ | result | uchar& | - | - | 復元した配列データ。 |
使用例
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);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)