Es problema del Unicode. Prueba así:
Código Delphi
[-]
function Encripta(sCadena: AnsiString): AnsiString;
var
sRegreso : AnsiString;
i, iTam : integer;
szBuffer, szCadena : array[0..100] of AnsiChar;
begin
sRegreso := '';
iTam := Length(sCadena);
StrPCopy(szBuffer,sCadena);
for i:=0 to iTam - 1 do
szCadena[i] := AnsiChar(Ord(szBuffer[i])+iTam);
szCadena[iTam] := szBuffer[iTam];
sRegreso := StrPas(szCadena);
result := sRegreso;
end;
function DesEncripta(sCadena:AnsiString):AnsiString;
var
sRegreso : AnsiString;
i, iTam : integer;
szBuffer, szCadena : array[0..100] of AnsiChar;
begin
sRegreso := '';
iTam := Length(sCadena);
StrPCopy(szBuffer,sCadena);
for i := 0 to iTam - 1 do
szCadena[i] := AnsiChar(Ord(szBuffer[i])-iTam);
szCadena[iTam] := szBuffer[iTam];
sRegreso := StrPas(szCadena);
result := sRegreso;
end;
Esto funciona igual en delphi7 pero en las versiones de delphi que priorizan el unicode, fuerza a usar AnsiChar con lo que los resultados de la encriptación son idénticos a como si usaras delphi7
Saludos.