home *** CD-ROM | disk | FTP | other *** search
/ PC Underground / UNDERGROUND.ISO / password / passwgen.pas < prev    next >
Pascal/Delphi Source File  |  1995-07-28  |  2KB  |  100 lines

  1. program GENERATE_PASSWORDFILE;
  2. {
  3.  The program encrypts an entered password and saves it
  4.  in the file PASSWORD.DAT.
  5.   Author: Boris Bertelsons
  6.  (c)'95 Data Becker GmbH
  7.  (c)'95 ABACUS Software, Inc
  8. }
  9.  
  10. Uses Crt;
  11.  
  12. var password : string;
  13.     pwf : file;
  14.     check : word;
  15.     key : char;
  16.  
  17. function Encrypt(pasw : string;add : char) : string;
  18. var li : integer;
  19. begin
  20.   for li := 1 to 255 do begin;
  21.     pasw[li] := char(255 xor (ord(pasw[li]) + ord(add)));
  22.   end;
  23.   Encrypt := Pasw;
  24. end;
  25.  
  26. function Gen_checksum(pasw : string) : word;
  27. var sum : word;
  28.     li : integer;
  29. begin
  30.   sum := 0;
  31.   for li := 1 to ord(pasw[0]) do begin;
  32.     sum := sum + ord(pasw[li]);
  33.   end;
  34.   Gen_checksum := sum;
  35. end;
  36.  
  37. function Decrypt(pasw : string;add : char) : string;
  38. var li : integer;
  39. begin
  40.   for li := 1 to 255 do begin;
  41.     pasw[li] := char((255 xor ord(pasw[li])) - ord(add));
  42.   end;
  43.   decrypt := Pasw;
  44. end;
  45.  
  46. function Checksum_Ok(pasw : string; Key: char; sum : word) : boolean;
  47. var tsum : word;
  48.     li : integer;
  49.     h : char;
  50. begin
  51.   tsum := 0;
  52.   for li := 1 to ord(pasw[0]) do begin
  53.     tsum := tsum + ord(pasw[li]);
  54.   end;
  55.   if sum = tsum then
  56.     Checksum_Ok := true
  57.   else
  58.     Checksum_Ok := false;
  59. end;
  60.  
  61. begin  
  62.   clrscr;
  63.   writeln('Please enter the password to be encrypted !');
  64.   write('Password: ');
  65.   readln(password);
  66.   writeln('Please enter the key (any randomly selected ASCII character)');
  67.   write('Key: ');
  68.   readln(key);
  69.   writeln('Writing information to file ...');
  70.   writeln;
  71.  
  72.   check := Gen_checksum(password);
  73.   password := encrypt(password, key);
  74.  
  75.   assign(pwf,'PASSWORD.DAT');
  76.   rewrite(pwf,1);
  77.   blockwrite(pwf,key,1);
  78.   blockwrite(pwf,password,256);
  79.   blockwrite(pwf,check,2);
  80.   close(pwf);
  81.  
  82.   reset(pwf,1);
  83.   blockread(pwf,key,1);
  84.   blockread(pwf,password,256);
  85.   blockread(pwf,check,2);
  86.   close(pwf);
  87.  
  88.   writeln('Rereading Information for verification ...');
  89.   writeln('Encrypted : ',password);
  90.   writeln('Key: ',key);
  91.  
  92.   Password := decrypt(password,key);
  93.   writeln('Verify  : ',password);
  94.   If Checksum_Ok(password,key,check) then
  95.     writeln('Checksum O.K.')
  96.   else
  97.     writeln('WARNING! Checksum not correct !');
  98.  
  99.   repeat until keypressed; readkey;
  100. end.