viernes, 24 de febrero de 2012

Decodificar fichero de texto

 Partiendo de la base del programa de encriptación, pero invirtiendo los pasos para encriptar, se llega al programa que desencripta los textos encriptados, siempre y cuando la clave sea la misma que de encriptación.

program desencripta(input,output);
const
  min=32;
  max=126;
type
  NomFich=string[50];
  tpContador=1..maxint;
var
  nom:NomFich;
  codificado,decodificado:text;
  aux:char;
  contador:integer;

procedure Decodificar(VAR a:char; c:tpContador);
  const
    clave='
AquiSeIntroduceLaClave';{debe ser la misma que la usada para encriptar}
  var
    n:integer;
  begin {mirando en las tablas del codigo ASCII}
    if (ord(a)>=min) and (ord(a)<=max) then begin
      n:=((c-1) mod ord(clave[0])) + 1;
      n:=ord(a)-ord(clave[n])+(max-min+1);
      n:=(n mod (max-min+1))+min;
      a:=chr(n)
    end
  end;

begin
  write('Introduzca el nombre del fichero de texto a decodificar: ');
  readln(nom);
  assign(decodificado,nom);
  assign(codificado,'decodificado.txt');
  reset(decodificado); rewrite(codificado);
  contador:=0;
  while not eof(decodificado) do begin
    while not eoln(decodificado) do
    begin
      contador:=contador+1;
      read(decodificado,aux);
      Decodificar(aux,contador);
      write(codificado,aux)
    end;
    readln(decodificado);writeln(codificado)
  end;
  close(codificado); close(decodificado);
  readln
end.

No hay comentarios:

Publicar un comentario