CryptEncode 関数
この関数は、配列データを指定した方法で変換 (エンコード) して、変換後の大きさ (byte) を取得します。
データ型と構成・戻り値
int CryptEncode(①, ②, ③, ④);
戻り値は、引数④ (変換後の配列) の大きさ (byte) を返します。
発生するエラーについては、GetLastError関数で取得することができます。
引数 [4]
CryptEncode関数は 4個の引数で構成されます。
番 号 | 引数名 | データ型 | 単位 | 初期値 | 説明 |
---|---|---|---|---|---|
① | method | enum | - | - | データ変換方法 (暗号化方法)。ENUM_CRYPT_METHOD 列挙値から選択。 |
② | data[] | const uchar& | - | - | 変換元の配列データ。 |
③ | key | const uchar& | - | - | 暗号化キー。データの計算手順を決める符号です。任意に設定します。この設定により変換結果が違ってきます。①のデータ変換方法によって設定する暗号化キーの長さが異なります。 |
④ | result | uchar& | - | - | 変換後の配列データ。 |
使用例
CryptEncode関数による配列データの暗号化
CryptEncode関数を使って配列データを暗号化します。暗号化の方法は DES暗号化 (7バイト) とします。これにより暗号化キーは最低でも 6文字以上で設定する必要があります。
コード
// CryptEncode関数による配列データの暗号化
#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);
}
コードをコンパイルして実行する方法はこちらを参考にしてください。(デモ口座でお試しください)
結果
引数①のデータ変換方法やコード上の暗号化キーを変更することで「②変換後データ」が変わりますので試してみてください。