1 rem password generator 2 rem rosetta code 10 g$(1)="abcdefghijklmnopqrstuvwxyz" 15 g$(2)="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 20 g$(3)="0123456789" 25 g$(4)="<>!@#$%^&*()[];:'.?/" 30 print chr$(147);chr$(14) 35 print "Password Generator":print 40 print "Press H for help, or any":print "other key to begin.":print 45 get k$:if k$="" then 45 50 if k$="h" then gosub 500 60 print chr$(147) 65 input "Enter password length: (6-30)";pl 70 if pl<6 or pl>30 then print "Out of range.":goto 65 75 print:input "How many passwords (1-20)";np 80 if np<1 or np>20 then print "Out of range.":goto 75 85 if np>10 then dim pw$(np) 90 if np*pl > 100 then print:print "Um... Ok, this might take a bit." 100 for pc=1 to np 105 for i=1 to 4:g(i)=0:next 110 tp$="" 112 for i=1 to pl 115 cg=int(rnd(1)*4)+1 120 cc=int(rnd(1)*len(g$(cg)))+1 125 tp$=tp$+mid$(g$(cg),cc,1) 130 g(cg)=g(cg)+1 135 next i 140 for i=1 to 4 145 if g(i)=0 then goto 110 150 next i 155 pw$(pc)=tp$ 160 next pc 200 print chr$(147);"Password list:":print 205 for pc=1 to np:print pc;chr$(157);".";tab(6);pw$(pc):next pc 210 print:print "Again? (y/n)"; 215 get k$:if k$<>"y" and k$<>"n" then 215 220 if k$="y" then clr:goto 10 225 end 500 rem *** help *** 505 print chr$(147);"This program will generate a password" 510 print "made up of each of the following" 515 print "character types:":print 520 print " - Uppercase Letter (A-Z)" 525 print " - Lowercase Letter (a-z)" 530 print " - Number (0-9)" 535 print " - Punctuation and Other Symbols" 540 print " (e.g. # $ ! & [ . ;, etc.)" 545 print 550 print "You may choose how many total characters"; 555 print "(up to 30) should be in the password, " 560 print "and how many passwords (up to 20) should"; 565 print "be generated. The program ensures that " 570 print "there is at least one character from " 575 print "each of the character types in each " 580 print "password." 585 print 590 print "Note: You can edit the character lists" 595 print "on lines 10-25 to customize the" 600 print "selection pool." 605 print 610 print "Press any key to begin." 615 get k$:if k$="" then 615 620 return