function asc(letras:string):integer;
begin
if length(letras)>=1 then
result:=ord(letras[1])
else
result:=0;
end;
function sCipher(text,key:string):string;
var
i,j,seed:integer;
sfinal:String;
begin
sfinal:=''; seed:=0;
for i :=1 to length(key) do
begin
seed:=(seed+asc(key)) * length(key);
key:=AnsiMidStr(key,2,length(key)-1);
end;
for j:=1 to length(text) do
begin
sfinal:=sfinal+IntToStr((ord(text[1])+seed));
text:= AnsiMidStr(text,2,length(text));
end;
result:=sfinal;
end;
function sUnCipher(text,key:string):string;
var
seed,step,tamano,i,j:integer;
sfinal:string;
begin
seed:=0; sfinal:='';
for i :=1 to length(key) do
begin
seed:=(seed+asc(key))*length(key);
key:=AnsiMidStr(key,2,length(key)-1);
end;
step:=length(inttostr(seed));
j:=step;
tamano:=length(text);
while(j<=tamano) do
begin
sfinal:=sfinal+chr(strtoint(AnsiLeftStr(text,step))-seed);
text:= AnsiMidStr(text,step+1,length(text));
j:=j+step;
end;
result:=sfinal;
end;