CODE:
string text="QWEqwe123";
string code="шифр";
string incr=incryption(text, code);
messagebox("Зашифровано: "+incr);
char BYTE[500];
strcpy(#BYTE[0], incr);
string coded=base64code (#BYTE[0], size(incr));
messagebox("Закодировано: "+coded);
char A[500];
char B[500];
strcpy(#A[0], coded);
base64decode (#A[0], size(coded), #B[0]);
string decoded=format(#B[0]);
messagebox("Раскодировано: "+decoded);
string decryp=incryption(format(#B[0]), code);
messagebox("Расшифровано: "+decryp);
function binary(string symbol)
{
int x=formatci(symbol), arr[8], z=-1;
string s="";
while (x>0){z++; arr[z]=mod(x, 2); x=x/2;}
for(int i=z; i>-1; i--)s=s+format(arr[i]);
while(size(s)<8)s="0"+s;
return s;
}
function decimal(string symbol3)
{
char c[9]; strcpy(#c[0], symbol3);
int z=0, degree=size(symbol3)-1;
for(int i=0; i<8; i++){if(c[i]=='1')z=z+pow(2, degree); degree--;}
return formatic(z);
}
function xor(int x, int y){if((x==0 && y==0) || (x==1 && y==1))return 0; return 1;}
function mod(int a, int b){int z=a/b; return a-z*b;}
function incryption(string str, string key_)
{
string symbol2, ss;
char c1[9], c2[9];
int size_str=size(str), size_key=size(key_);
new char c3[size_str+1]; new char c4[size_key+1];
strcpy(#c3[0], str); strcpy(#c4[0], key_);
ss="";
for(int i=0; i<size_str; i++)
{
strcpy(#c1[0], binary(c3[i]));
for(int j=0; j<size_key; j++)
{
symbol2="";strcpy(#c2[0], binary(c4[j]));
for(int k=0; k<8; k++)
{
if(xor(formatsn(c1[k]), formatsn(c2[k]))==0)symbol2=symbol2+"0";
else symbol2=symbol2+"1";
}
strcpy(#c1[0], symbol2);
}
ss=ss+decimal(symbol2);
}
delete c3;
delete c4;
return ss;
}
может кому-то пригодится |