(* Wachtwoordmaker deel 1 (an aug2024)
Met ctrl-A selecteer je de gehele inhoud van deze html-file als platte tekst.
Met ctrl-C copieer je dat.
Met ctrl-V plak je het in de terminal of in een file voor een platte-tekst editor.
Voor forthbijeenkomst 05okt2024
.W ( len x -- ) \ druk wachtwoord af
len = lengte vh wachtwoord
x = een willekeurig getal
Vier varianten:
.W0 - Basisprogramma
.W1 - Spatie om de 4 tekens
.W2 - Niet te veel leestekens .W2a - Alternatief voor .W2
.W3 - Vermijd 0 1 I O l | .W3a - Alternatief voor .W3
noForth woorden: CH UMIN ?EXIT FOR NEXT
*)
\ Vooraf
decimal
111 value (RND)
: RND ( -- x ) \ Genereer een random getal.
(rnd)
31421 * 6927 +
dup to (rnd) ;
\ .W - Basisprogramma
: GET ( -- ch ) \ Genereer random ch, 34% kans op leesteken
rnd ( x )
94 ( x 94 ) \ 94 zichtbare tekens, ! t/m ~
mod ( n ) \ n in [0..93]
ch ! + ; ( ch )
: .W0 ( len x -- ) \ Druk wachtwoord af
to (rnd)
64 umin \ len' in [0..64]
for get emit
next space ;
\ .W1 - Spatie om de 4 tekens
: ?SPACE ( i -- )
3 and ?exit space ;
: .W1 ( len x -- )
to (rnd)
64 umin 0
?do i ?space get emit
loop space ;