home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Interdit
/
pc-interdit.iso
/
motpasse
/
genmtpas.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
1994-10-18
|
2KB
|
103 lines
program cree_fichiermotdepasse;
{
Ce programme encode un mot de passe tapé au clavier et le stocke
dans le fichier MOTPASSE.DAT .
(c)'94 MICRO APPLICATION Auteur : Boris Bertelsons
}
uses crt;
VAR Motdepasse : string;
fmp : file;
check : word;
key : char;
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;
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 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;
begin;
clrscr;
writeln('Tapez svp le mot de passe à encoder !');
write('Mot de passe : ');
readln(Motdepasse);
writeln('Indiquez la clé (caractère ASCII de votre choix)');
write('Clé : ');
readln(Key);
writeln('enregistrement de l''information dans un fichier ...');
writeln;
Check := gen_Checksum(Motdepasse);
Motdepasse := encode(Motdepasse,Key);
assign(fmp,'motpasse.dat');
rewrite(fmp,1);
blockwrite(fmp,key,1);
blockwrite(fmp,Motdepasse,256);
blockwrite(fmp,check,2);
close(fmp);
reset(fmp,1);
blockread(fmp,key,1);
blockread(fmp,Motdepasse,256);
blockread(fmp,check,2);
close(fmp);
writeln('Relecture de l''information pour contrôle ...');
writeln('Mot encodé : ',Motdepasse);
writeln('Clé : ',Key);
Motdepasse := decode(Motdepasse,Key);
writeln('Vérification : ',Motdepasse);
If Checksum_Ok(Motdepasse,Key,check) then
writeln('Checksum O.K.')
else
writeln('ATTENTION ! Erreur dans la somme de contrôle !');
repeat until keypressed;
{ readkey ;}
end.