引数名 | 初期値 | I/O | 詳細 |
method | - | In | データ変換メソッド。 ENUM_CRYPT_METHOD列挙の値で指定します。 |
data[] | - | In | 変換するデータ配列
|
key[] | - | In | キー配列
|
result[] | - | Out | データ変換後のコピー先配列
|
void OnInit(){ string text ="テストデータ文字列"; // 変換元データ string keystr ="ABCDEFG"; // キー文字列 uchar array_src[]; uchar array_dst[]; uchar array_key[]; int res; StringToCharArray(keystr, array_key); // array_key配列にkeystをコピー StringToCharArray(text , array_src); // array_src配列にtextをコピー PrintFormat("変換前の元データ : サイズ=%d, 文字列='%s'", ArraySize(array_src),CharArrayToString(array_src)); //---array_key配列のDES-56bitキーで、array_src配列のデータを暗号化 res = CryptEncode( CRYPT_DES , array_src , array_key , array_dst); if( res > 0 ) { // エンコードされた結果を表示 PrintFormat("エンコード後のデータ: サイズ=%d, データ=%s",res,ArrayToHex(array_dst)); //--- エンコードされたデータをデコード res = CryptDecode( CRYPT_DES ,array_dst,array_key,array_src); if( res > 0 ) { // デコードされた結果を表示 PrintFormat("デコード後のデータ : サイズ=%d, 文字列='%s'", ArraySize(array_src),CharArrayToString(array_src)); } else { Print("デコードエラー。 エラーコード=",GetLastError()); } } else { Print("エンコードエラー。 エラーコード =",GetLastError()); } } //+------------------------------------------------------------------+ //| ucharデータ配列の全要素から、文字列(16進数表示)を作成 //|------------------------------------------------------------------| string ArrayToHex( uchar &arr[] , int count=-1 ) { string res = ""; //--- arr配列サイズ確認 if( count < 0 || count > ArraySize(arr)) { count = ArraySize(arr); } //--- arr配列のデータから文字列(16進数表示)を作成 for( int i=0; i < count; i++) { res += StringFormat("%.2X",arr[i]); } return( res ); }
変換前の元データ : サイズ=19, 文字列='テストデータ文字列' エンコード後のデータ: サイズ=24, データ=2803428754BA9A495FF2538F3405302F9C71FA058F531303 デコード後のデータ : サイズ=24, 文字列='テストデータ文字列'