Encriptar / desencriptar ficheros
Artículo por Club Developers · 31 diciembre 2005
4074 vistas
Se trata de una función que encripta el contenido de un fichero usando una clave pseudo aleatoria.
La misma función aplicada sobre un fichero previamente encriptado con la misma clave restaura el fichero original.
Mostramos la función y un ejemplo de llamada, todo contenido en el OnClick de un TButton:
La misma función aplicada sobre un fichero previamente encriptado con la misma clave restaura el fichero original.
Mostramos la función y un ejemplo de llamada, todo contenido en el OnClick de un TButton:
delphi
procedure TForm1.Button2Click(Sender: TObject); procedure EncriptaFichero(Ori, Dest: string; Clave:integer); { Encripta el ficehro 'Ori', depositandolo en el fichero 'Dest' usando como clave 'Clave'. Una pasada: encripta, otra pasada sobre el fichero encriptado, con la misma clave, lo desencripta. Ori: Nombre del fichero original (Source filename) Dest: Nombre del fichero encriptado (Destination filename) } const MAXBUFFER = 4096; //4k de buffer; var Buffer: array[1..MAXBUFFER] of byte; Origen, Destino: TFileStream; n, Leidos: integer; begin Origen := TFileStream.Create(Ori,fmOpenRead+fmShareDenyWrite); Destino := TFileStream.Create(Dest,fmCreate); RandSeed := Clave; try repeat Leidos := Origen.Read( Buffer[1],MAXBUFFER ); for n := 1 to Leidos do begin Buffer[n] := Buffer[n] xor Random(256); end; Destino.Write(Buffer[1], Leidos); until (Leidos < MAXBUFFER); finally Origen.Free; Destino.Free; end; end; begin {Ejemplo de llamada:} {Encriptar el fichero Test.txt con la clave 666} try EncriptaFichero('c:\kk\Test.txt', 'c:\kk\Test.dat', 666); except on E: Exception do ShowMessage( 'Error: No se pudo Encriptar el fichero.' + #13 + 'Motivo: ' + E.Message); end; {Desencripta el fichero Test.dat con la clave 666:} try EncriptaFichero('c:\kk\Test.dat', 'c:\kk\Test.txt', 666); except on E:exception do ShowMessage( 'Error: No se pudo desencriptar el fichero.' + #13 + 'Motivo: ' + E.Message); end; end;