//+------------------------------------------------------------------+
//| ArrayToHex |
//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
{
string res="";
//--- 확인
if(count<0 || count>ArraySize(arr))
count=ArraySize(arr);
//--- HEX string으로 변환
for(int i=0; i<count; i++)
res+=StringFormat("%.2X",arr[i]);
//---
return(res);
}
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수 |
//+------------------------------------------------------------------+
void OnStart()
{
string text="갈색 여우는 게으른 개를 뛰어넘는다";
string keystr="ABCDEFG";
uchar src[],dst[],key[];
//--- 키 준비
StringToCharArray(keystr,key);
//--- 소스 배열 src[]로 텍스트 복사
StringToCharArray(text,src);
//--- 초기 데이터 인쇄
PrintFormat("초기 데이터: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- key[]에서 DES 56 비트 키를 사용하여 src[] 암호화
int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- 오류 확인
if(res>0)
{
//--- 암호화 데이터 인쇄
PrintFormat("인코드된 데이터: size=%d %s",res,ArrayToHex(dst));
//--- dst[]를 src[]로 해독
res=CryptDecode(CRYPT_DES,dst,key,src);
//--- 오류 확인
if(res>0)
{
//--- 해독된 데이터 인쇄
PrintFormat("해독된 데이터: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
}
else
Print("CryptDecode에 오류. Error code=",GetLastError());
}
else
Print("CryptEncode에 오류. Error code=",GetLastError());
}
|