CryptEncode
Chuyển đổi dữ liệu từ mảng bằng phương pháp được chỉ định.
cpp
int CryptEncode(
ENUM_CRYPT_METHOD method, // phương pháp
const uchar& data[], // mảng nguồn
const uchar& key[], // khóa
uchar& result[] // mảng đích
);
1
2
3
4
5
6
2
3
4
5
6
Tham số
method
[truyền vào] Phương pháp chuyển đổi dữ liệu. Có thể là một trong những giá trị của bảng liệt kê ENUM_CRYPT_METHOD
.
data[]
[truyền vào] Mảng nguồn.
key[]
[truyền vào] Mảng khóa.
result[]
[truyền ra] Mảng đích.
Giá trị trả về
Số byte trong mảng đích hoặc 0 trong trường hợp lỗi. Để lấy thông tin về lỗi, hãy gọi hàm GetLastError()
.
Ví dụ:
cpp
//+------------------------------------------------------------------+
//| ArrayToHex |
//+------------------------------------------------------------------+
string ArrayToHex(uchar &arr[],int count=-1)
{
string res="";
//--- kiểm tra
if(count<0 || count>ArraySize(arr))
count=ArraySize(arr);
//--- chuyển đổi sang chuỗi HEX
for(int i=0; i<count; i++)
res+=StringFormat("%.2X",arr[i]);
//---
return(res);
}
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string text="The quick brown fox jumps over the lazy dog";
string keystr="ABCDEFG";
uchar src[],dst[],key[];
//--- chuẩn bị khóa
StringToCharArray(keystr,key);
//--- sao chép văn bản vào mảng nguồn src[]
StringToCharArray(text,src);
//--- in dữ liệu ban đầu
PrintFormat("Dữ liệu ban đầu: kích thước=%d, chuỗi='%s'",ArraySize(src),CharArrayToString(src));
//--- mã hóa src[] bằng khóa DES 56-bit trong key[]
int res=CryptEncode(CRYPT_DES,src,key,dst);
//--- kiểm tra lỗi
if(res>0)
{
//--- in dữ liệu đã mã hóa
PrintFormat("Dữ liệu đã mã hóa: kích thước=%d %s",res,ArrayToHex(dst));
//--- giải mã dst[] về src[]
res=CryptDecode(CRYPT_DES,dst,key,src);
//--- kiểm tra lỗi
if(res>0)
{
//--- in dữ liệu đã giải mã
PrintFormat("Dữ liệu đã giải mã: kích thước=%d, chuỗi='%s'",ArraySize(src),CharArrayToString(src));
}
else
Print("Lỗi trong CryptDecode. Mã lỗi=",GetLastError());
}
else
Print("Lỗi trong CryptEncode. Mã lỗi=",GetLastError());
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
Xem thêm