Función para cifrar
Código:
function cifrar(cadena: String; Key: Integer): String;
var
i:integer;
begin
Result:='';
for i:=1 to Length(cadena) do
begin
RandSeed:= key*i+length(cadena);
if i mod 2= 0 then
Result:=Result+Chr(ord(cadena[i]) xor (key*i+random(512)+length(cadena))+i)
else
Result:=Result+Chr(ord(cadena[i]) xor (key*i*random(1024)-length(cadena))-randseed) ;
end;
end;
Ahora vamos con la función para descifrar:
Código:
function descifrar(cadena: String; Key: Integer): String;
var
i:integer;
begin
Result:='';
for i:=1 to Length(cadena) do
begin
RandSeed:= key*i+length(cadena);
if i mod 2= 0 then
Result:=Result+Chr((ord(cadena[i])-i) xor (KEY*i+random(512)+length(cadena)))
else
Result:=Result+Chr((ord(cadena[i])+randseed) xor (KEY*i*random(1024)-length(cadena))) ;
end;
end;
Este algoritmo se basa en el cifrado XOR combinado con trasposición, haciendo de él un fuerte método de cifrado. A ver si le echan un vistazo e intentan mejorarlo o buscan posibles vulnerabilidades. Saludos!!