Ver Mensaje Individual
  #18  
Antiguo 05-07-2005
gontxalo gontxalo is offline
Miembro
 
Registrado: may 2005
Posts: 99
Reputación: 20
gontxalo Va por buen camino
No me funciona correctamente

Hola
He leído mensajes del foro de encriptación y muchos hablan del truco nº 1oo de http://www.q3.nu/trucomania/

Pero en los comentarios sale también que no funciona correctamente y eso es lo que me pasa.

También Miguel Angel comenta:
A mi me funciona perfectamente, aunque con dos limitaciones.
1 Se ha de utilizar variables de tipo string (No un componente como TEdit, TMemo etc.).
2 El tamaño de la cadena a encriptar no puede ser mayor de 255 caracteres.

Yo creo un fichero .txt de los Edit y en el evento click de un botón se guarda encriptado. Luego en el evento click de otro botón recuperarlo, desencriptarlo y que aparezca en los edit. Me funciona correctamente, pero en algunas palabras no. En algunas se me corta, en otras aparece en los edit parte del encriptado.

Que puedo hacer?
Si no funciona correctamente por los edit que puedo hacer?

Gracias.

Code:
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
Var
MiFichero : TextFile;
Nombre : String;
const
C1 = 52845;
C2 = 11719;
function Encrypt(const S: String; Key: Word): String;
Var
I: byte;
begin
SetLength(Result,Length(S));
for I := 1 to Length(S) do begin
Result[i] := char(byte(S[i]) xor (Key shr 8));
Key := (byte(Result[i]) + Key) * C1 + C2;
end;
end;
begin
Edit1.Text := Encrypt(Edit1.Text,6474);
Nombre := Edit1.Text;
AssignFile (MiFichero,'nombre.txt');
Rewrite (MiFichero);
writeln(MiFichero,Nombre);
CloseFile (mifichero);
Edit1.Clear
end;
procedure TForm2.Button2Click(Sender: TObject);
Var
MiFichero : TextFile;
Nombre : String;
const
C1 = 52845;
C2 = 11719;
function Decrypt(const S: String; Key: Word): String;
var
I: byte;
begin
SetLength(Result,Length(S));
for I := 1 to Length(S) do begin
Result[i] := char(byte(S[i]) xor (Key shr 8));
Key := (byte(S[i]) + Key) * C1 + C2;
end;
end;
begin
AssignFile (MiFichero,'nombre.txt');
Reset (MiFichero);
Read(MiFichero,Nombre);
CloseFile (mifichero);
Edit1.Text := Nombre;
Edit1.Text := Decrypt(Edit1.Text,6474);
end;
end.
Responder Con Cita