home *** CD-ROM | disk | FTP | other *** search
/ PC Interdit / pc-interdit.iso / motpasse / genmtpas.pas < prev    next >
Pascal/Delphi Source File  |  1994-10-18  |  2KB  |  103 lines

  1. program cree_fichiermotdepasse;
  2. {
  3.  Ce programme encode un mot de passe tapé au clavier et le stocke
  4.  dans le fichier MOTPASSE.DAT .
  5.  
  6.  (c)'94 MICRO APPLICATION                  Auteur : Boris Bertelsons
  7. }
  8.  
  9. uses crt;
  10.  
  11. VAR Motdepasse : string;
  12.     fmp : file;
  13.     check : word;
  14.     key : char;
  15.  
  16. Function encode(mdp : string;add : char) : string;
  17. var li : integer;
  18. begin;
  19.   for li := 1 to 255 do begin;
  20.     mdp[li] := char(255 xor (ord(mdp[li]) + ord(add)));
  21.   end;
  22.   encode := mdp;
  23. end;
  24.  
  25. Function Gen_Checksum(mdp : string) : word;
  26. VAR somme : word;
  27.     li : integer;
  28. begin;
  29.   somme := 0;
  30.   for li := 1 to ord(mdp[0]) do begin;
  31.     somme := somme + ord(mdp[li]);
  32.   end;
  33.   Gen_Checksum := somme;
  34. end;
  35.  
  36. Function decode(mdp : string;add : char) : string;
  37. var li : integer;
  38. begin;
  39.   for li := 1 to 255 do begin;
  40.     mdp[li] := char((255 xor ord(mdp[li])) - ord(add));
  41.   end;
  42.   decode := mdp;
  43. end;
  44.  
  45. Function Checksum_Ok(mdp : string; Key: char; somme : word) : boolean;
  46. Var tsomme : word;
  47.     li : integer;
  48.     h : char;
  49. begin;
  50.   tsomme := 0;
  51.   for li := 1 to ord(mdp[0]) do begin;
  52.     tsomme := tsomme + ord(mdp[li]);
  53.   end;
  54.   if somme = tsomme then
  55.     Checksum_Ok := true
  56.   else
  57.     Checksum_Ok := false;
  58. end;
  59.  
  60. begin;
  61.   clrscr;
  62.   writeln('Tapez svp le mot de passe à encoder !');
  63.   write('Mot de passe : ');
  64.   readln(Motdepasse);
  65.   writeln('Indiquez la clé (caractère ASCII de votre choix)');
  66.   write('Clé : ');
  67.   readln(Key);
  68.   writeln('enregistrement de l''information dans un fichier ...');
  69.   writeln;
  70.  
  71.   Check := gen_Checksum(Motdepasse);
  72.   Motdepasse := encode(Motdepasse,Key);
  73.  
  74.   assign(fmp,'motpasse.dat');
  75.   rewrite(fmp,1);
  76.   blockwrite(fmp,key,1);
  77.   blockwrite(fmp,Motdepasse,256);
  78.   blockwrite(fmp,check,2);
  79.   close(fmp);
  80.  
  81.   reset(fmp,1);
  82.   blockread(fmp,key,1);
  83.   blockread(fmp,Motdepasse,256);
  84.   blockread(fmp,check,2);
  85.   close(fmp);
  86.  
  87.   writeln('Relecture de l''information pour contrôle ...');
  88.   writeln('Mot encodé   : ',Motdepasse);
  89.   writeln('Clé          : ',Key);
  90.  
  91.   Motdepasse := decode(Motdepasse,Key);
  92.   writeln('Vérification : ',Motdepasse);
  93.   If Checksum_Ok(Motdepasse,Key,check) then
  94.     writeln('Checksum O.K.')
  95.   else
  96.     writeln('ATTENTION ! Erreur dans la somme de contrôle !');
  97.  
  98.   repeat until keypressed;
  99. {  readkey  ;}
  100. end.
  101.  
  102.  
  103.