asmodeus94

generatorHasel

Sep 21st, 2014
190
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 3.13 KB | None | 0 0
  1. program generatorHasel;
  2. uses crt;
  3. const
  4.    MAXDLUGOSC = 8;
  5.    MAXPRZYKLADOW = 10;
  6. var
  7.    a, b : byte;
  8.    t  : text;
  9.    dlHasla : integer;
  10.    password : string;
  11.    dlugosci : array [1..MAXDLUGOSC] of byte;
  12.  
  13. function przesun(c : char) : char;
  14. var
  15.    krok, flaga : byte;
  16.    zwrot, przesuniete : integer;
  17. begin
  18.    flaga := 0;
  19.    REPEAT
  20.       krok := random(16);
  21.       zwrot := random(2);
  22.       if zwrot = 0 then przesuniete := ord(c) + krok * (-1)
  23.       ELSE przesuniete := ord(c) + krok;
  24.       if(przesuniete >= 33) AND (przesuniete <= 125) AND (chr(przesuniete) <> '"') then flaga := 1;
  25.    UNTIL flaga = 1;
  26.    przesun := chr(przesuniete);
  27. end;
  28. function mieszaj(s : string) : string;
  29. var
  30.    a, dlStr, ilProb, odKonca : byte;
  31.    tmp : char;
  32.    kol : string;
  33. begin
  34.    dlStr := Length(s);
  35.    for a := 1 to dlStr - 1 do begin
  36.       tmp := przesun(s[a]);
  37.       s[a] := przesun(s[a + 1]);
  38.       s[a + 1] := tmp;
  39.    end;
  40.    ilProb := dlStr div 2;
  41.    if dlStr mod 2 = 1 then ilProb := ilProb + 1;
  42.    kol := '';
  43.    for a := 1 to ilProb do begin
  44.       odKonca := dlStr - a + 1;
  45.       if a <> odKonca then kol := kol + s[a] + s[odKonca] ELSE kol := kol + s[a];
  46.    end;
  47.    mieszaj := kol;
  48. end;
  49. function tworzHaslo(var k : byte) : string;
  50. var
  51.    a, r : byte;
  52.    kol : string;
  53. begin
  54.    kol := '';
  55.    for a := 1 to k do begin
  56.       r := random(93) + 33;
  57.       kol := kol + chr(r);
  58.    end;
  59.    tworzHaslo := mieszaj(kol);
  60. end;
  61. function powielacz(znak : char; liczbaWystapien : byte) : string;
  62. var
  63.    a : byte;
  64.    kol : string;
  65. begin
  66.    kol := '';
  67.    for a := 1 to liczbaWystapien do begin
  68.       kol := kol + znak;
  69.    end;
  70.    powielacz := kol;
  71. end;
  72. begin
  73.    clrscr;
  74.    randomize;
  75.    write('Pozadana dlugosc hasla: ');readln(dlHasla);
  76.    while ((4 > dlHasla) OR (255 < dlHasla)) do begin
  77.       clrscr;
  78.       writeln('Dopuszczalny zakres dlugosci hasla to <0,255>!');
  79.       write('Podaj prawidlowa dlugosc hasla: ');readln(dlHasla);
  80.    end;
  81.    dlugosci[2] := 8;
  82.    dlugosci[3] := 10;
  83.    dlugosci[4] := 16;
  84.    dlugosci[5] := 20;
  85.    dlugosci[6] := 32;
  86.    dlugosci[7] := 64;
  87.    dlugosci[8] := 128;
  88.  
  89.    for a := 2 to MAXDLUGOSC do begin
  90.       if dlHasla = dlugosci[a] then dlugosci[a] := 0;
  91.    end;
  92.    dlugosci[1] := dlHasla;
  93.    assign(t, 'passwords.txt');
  94.    rewrite(t);
  95.    writeln(t, 'Lista 92 używanych znaków:');
  96.    for a:=33 to 125 do begin
  97.       if (chr(a) <> ' ') then begin
  98.          write(t, a);
  99.          if a < 100 then write(t, ' ');
  100.          writeln(t, ' -  ', chr(a));
  101.       end;
  102.    end;
  103.    writeln(t, powielacz('*', 8));
  104.    for a:=1 to MAXDLUGOSC do begin
  105.       if(dlugosci[a] <> 0) then begin
  106.          write(t, 'Hasła o długości ',dlugosci[a],' znaków:');
  107.          for b := 1 to MAXPRZYKLADOW do begin
  108.             writeln(t, '');
  109.             password := tworzHaslo(dlugosci[a]);
  110.             write(t, password);
  111.          end;
  112.          writeln(t, '');
  113.          writeln(t, powielacz('~', dlugosci[a]));
  114.       end;
  115.    end;
  116.    close(t);
  117.    textcolor(red);
  118.    textbackground(7);
  119.    write('Hasla zostaly zapisane w pliku passwords.txt');
  120.    textbackground(0);
  121.    textcolor(7);
  122.    readkey;end.
Advertisement
Add Comment
Please, Sign In to add comment