Na konci leta sme sa v niekoľkých správičkách dozvedeli, že ukazovatelia sily hesla na rozličných stránkach vlastne pracujú pomerne hlúpo, pretože miesto toho, aby kontrolovali ozajstnú silu hesla, zisťujú len počet výskytov veľkých písmien, malých písmien a číslic. Tie sofistikovanejšie ukazovatele vo výsledku ocenia aj to, ak v hesle použijete aj iný znak, ako je písmeno a číslica.
Čo nás teda v dnešom jubilejnom kole nesúťaže čaká? Práve vytvorenie takéhoto sofistikovaného nástroja na zistenie sily hesla. Pravidlá sú nasledovné:
Vytvorte "modul" (program/one-liner/funkciu) pre overenie sily hesla. Heslo bude považované za silné, ak spĺňa nasledovné podmienky:
- je dlhé minimálne 10 znakov
- obsahuje minimálne jednu číslicu
- obsahuje minimálne jedno malé písmeno
- obsahuje minimálne jedno veľké písmeno
Heslo je zložené len z ASCII znakov, pričom obsahovať môže len písmená alebo číslice. Ak sa jedná o silné heslo, vypíšte na obrazovku text "Strong password". Ak sa naopak jedná o slabé heslo, vypíšte na obrazovku "Weak password".
Tak, ako aj minule, na súťažiacich nečakajú žiadne ceny, takže sa nemáte na čo tešiť. Ale pochváliť sa svojimi výtvormi a pokusmi sa určite pochválite radi. Tak šup do práce!
ruby -e "p=ARGV[0]; if p.length >= 10 and p =~ /[0-9]/ and p =~ /[A-Z]/ and p =~ /[a-z]/ then puts 'Strong password' else puts 'Weak password' end" PassWord10
Riešenie v programovacom jazyku C.
OT: Aby někdo náhodou nenabyl dojmu, že popsaný estimátor síly hesla je ten správný směr (tj. omezování uživatele vedoucí k psaní hesel na lístečky apod.), kterým se vydat při kontrole hesel, uvedu odkaz na pokus o vytvoření skutečně kvalitního estimátoru:
https://github.com/dropbox/zxcvbn
Asi nebudem jediný ktorého by zaujimálo, čo všetko bolo zle.
nuz... kedze sa jedna o (ne)sutaz, v ktorej sa neda nic vyhrat, musi byt nejako zdovodnene, ze preco nikto ziadnu cenu neziskal. cize je to skor take slovenske na sposob - skutok sa nestal :-)
eineltevsyv az mejukaď
peeehaapeecko
Neskúšal som, ale v PHP by mohlo fungovať aj toto:
Je to trochu upravený zápis z PERLu: