input string InpKey = "ABCDEFG"; // 암호화 키
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string text="The quick brown fox jumps over the lazy dog";
uchar src[],dst[],key[];
//--- 암호화 키 준비
StringToCharArray(InpKey,key);
//--- src[] 소스 배열 준비
StringToCharArray(text,src);
//--- 소스 데이터 표시
PrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- key[] 56비트 키를 사용하여 DES 메서드를 사용하여 src[] 배열을 암호화합니다.
int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- 암호화 결과 확인
if(res>0)
{
//--- 암호화된 데이터 표시
PrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
//--- key[] 56비트 키를 사용하여 DES 메서드를 사용하여 dst[] 배열 데이터를 해독합니다.
res=CryptDecode(CRYPT_DES,dst,key,src);
//--- 결과 확인
if(res>0)
{
//--- 복호화된 데이터 표시
PrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
}
else
Print("CryptDecode failed. Error: ",GetLastError());
}
else
Print("CryptEncode failed. Error: ",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);
}
|