Y por si alguien tiene curiosidad por el algoritmo:
Código Delphi
[-]
function Descifrar(Str: String; Clave: Integer): string;
var
i,k: integer;
begin
Str:= Uppercase(Str);
Result:= '';
for i:= 1 to Length(Str) do
begin
if Str[i] in ['A'..'Z'] then
begin
k:= Ord(Str[i]) - Clave;
if k < Ord('A') then
k:= Ord('Z') - Ord('A') + k + 1;
Result:= Result + Chr(k);
end else
Result:= Result + Str[i];
end;
end;
ShowMessage(Descifrar('hsaovbno wlymljapvu pz haahpuhisl, pa vjjbyz vusf hz hu hjjpklua',7));

Mira que era fácil, y di un montón de vueltas ...