program encode64 ;
var
a,b,L,filename:ansistring;
Function CryptBinaryToStringA(p:pchar;i:integer;j:integer;p2:pchar;p3:pointer):integer ; cdecl external 'Crypt32.dll';
Function CryptStringToBinaryA(p:pchar;l1:integer;L5:integer;b:pchar;L2:pointer;L3:pointer;l4:pointer):integer ; cdecl external 'Crypt32.dll';
Function Base64Decode(ss:ansistring):ansistring;
var
lngth,n:longint;
answer:ansistring;
b:array of byte;
panswer:pchar;
begin
lngth:=length(ss);
SetLength(b,lngth);
CryptStringToBinaryA(@ss[1],Lngth,1,@b[0],@Lngth,nil,nil);
setlength(answer,lngth);
panswer:=@answer[1];
for n :=0 to lngth do
begin
ord(panswer[n]):=(b[n]) ;
end;
exit(answer);
End;
Function Base64Encode(p :ansistring ):ansistring;
var
L:longint;
s:array of byte;
begin
L:=length(p)*2;
SetLength(s,L);
CryptBinaryToStringA(@p[1],Length(p),1,@s[0],@L);
exit(pchar( @s[0]));
End;
var
s,ec,dc:ansistring;
sp:pchar;
i:longint;
bool:boolean;
begin
randomize;
Setlength(a,1000);
sp:=@a[1];
for i:=0 to 1000-1 do sp[i]:=char(random(128));
writeln(a);
writeln;
ec:=base64encode(a);
writeln(ec);
writeln;
dc:= base64decode(ec);
writeln(dc);
writeln;
bool:= (dc=a);
writeln(bool);
readln;
end.