home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
motpasse
/
mtpass1.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-10-18
|
4KB
|
177 lines
program motdepasse_type1;
uses crt,design;
VAR motdepasse : string;
motdepassecheck : boolean;
procedure secret_readln(var s : string);
var c : char;
li : integer;
begin;
repeat
c := readkey;
if c <> #8 then begin;
s := s + c;
gotoxy(28,12);
for li := 1 to length(s) do write('*');
end else begin;
s := copy(s,1,length(s)-1);
gotoxy(28,12);
for li := 1 to length(s) do write('*');
write(' ');
gotoxy(wherex-1,wherey);
end;
until c = #13;
end;
procedure motdepasse_modifier;
begin;
save_screen;
fenetre(10,8,60,7,' Changement de mot de passe ',black,7);
writexy(13,10,'Veuillez taper SVP votre nouveau mot de passe ');
writexy(13,12,'Mot de passe : ');
motdepasse := '';
secret_readln(motdepasse);
restore_screen;
textcolor(7);
textbackground(black);
end;
Function Gen_Checksum(mdp : string) : word;
VAR somme : word;
li : integer;
begin;
somme := 0;
for li := 1 to ord(mdp[0]) do begin;
somme := somme + ord(mdp[li]);
end;
Gen_Checksum := somme;
end;
Function encode(mdp : string;add : char) : string;
var li : integer;
begin;
for li := 1 to 255 do begin;
mdp[li] := char(255 xor (ord(mdp[li]) + ord(add)));
end;
encode := Mdp;
end;
procedure motdepasse_enregistrer;
var fmp : file;
key : char;
check : word;
begin;
Check := gen_Checksum(motdepasse);
motdepasse := encode(motdepasse,Key);
assign(fmp,'motdepasse.dat');
rewrite(fmp,1);
blockwrite(fmp,key,1);
blockwrite(fmp,motdepasse,256);
blockwrite(fmp,check,2);
close(fmp);
end;
procedure motdepasse_saisir;
begin;
save_screen;
fenetre(10,8,60,7,' Contrôle du mot de passe ',black,7);
writexy(13,10,'Veuillez taper votre mot de passe ');
writexy(13,12,'mot de passe : ');
motdepasse := '';
secret_readln(motdepasse);
restore_screen;
textcolor(7);
textbackground(black);
end;
Function decode(mdp : string;add : char) : string;
var li : integer;
begin;
for li := 1 to 255 do begin;
mdp[li] := char((255 xor ord(mdp[li])) - ord(add));
end;
decode := Mdp;
end;
Function Checksum_Ok(mdp : string; Key: char; somme : word) : boolean;
Var tsomme : word;
li : integer;
h : char;
begin;
tsomme := 0;
for li := 1 to ord(mdp[0]) do begin;
tsomme := tsomme + ord(mdp[li]);
end;
if somme = tsomme then
Checksum_Ok := true
else
Checksum_Ok := false;
end;
procedure motdepasse_controler;
var fmp : file;
key : char;
check : word;
mottemoin : string;
begin;
assign(fmp,'motdepasse.dat');
reset(fmp,1);
blockread(fmp,key,1);
blockread(fmp,mottemoin,256);
blockread(fmp,check,2);
close(fmp);
mottemoin := decode(mottemoin,Key);
if Checksum_Ok(mottemoin,Key,check) and (mottemoin = motdepasse) then
motdepassecheck := true
else
motdepassecheck := false;
end;
procedure motdepasse_reagir;
begin;
save_screen;
fenetre(10,8,50,7,'',black,7);
If motdepassecheck then begin;
writexy(13,11,'mot de passe correct - Accès autorisé ');
end else begin;
writexy(13,11,'Mot de passe ERRONE ! - Accès interdit !');
end;
repeat until keypressed; readkey;
restore_screen;
textcolor(7);
textbackground(black);
end;
procedure menu;
var choix : byte;
begin;
repeat
clrscr;
writexy(10,1,'Exemple de programme pour mot de passe de type 1');
writexy(18,3,'(c) ''94 par MICRO APPLICATION ');
writexy(28,6,'M E N U');
writexy(28,7,'~~~~~~~');
writexy(15,8,'1 Modifier le mot de passe ');
writexy(15,9,'2 Contrôler le mot de passe');
writexy(15,10,'3 Fin');
writexy(15,13,'Votre choix : ');
readln(choix);
if choix = 1 then begin;
motdepasse_modifier;
motdepasse_enregistrer;
end;
if choix = 2 then begin;
motdepasse_saisir;
motdepasse_controler;
motdepasse_reagir;
end;
until choix = 3;
end;
begin;
menu;
end.