Passwort-Prüfer

Mit diesem kleinen Tool kannst du beliebige Passwörter auf ihre Stärke hin testen. Dabei wird kein Passwort an unsere Server gesendet. Es handelt sich um eine Prüfung mittels JavaScript, welche vollständig auf Clientseite abläuft.

Der hier verwendete Code

<div id="mitte"> <h1>Passwort-Prüfer</h1> <p>Gib Dein Passwort einfach in das untere Feld ein, und erhalte blitzschnell ein fundiertes Ergebnis. </p> <form name="passwordForm"> Passwort: <input type="text" value="" name="passwd" id="passformInput" size="33" maxlength=""><span id="lengout"></span><br><br> Passwortst&auml;rke: <input type="text" name="score" size="3" readonly="readonly"> &nbsp; in Worten: <input type="text" name="verdict" size="15" readonly="readonly"><br /><br/> <textarea name="matchlog" cols="60" readonly="readonly" rows="11"></textarea></form> <script> /* Password Strength Factors and Weightings password length: level 0 (3 point): less than 4 characters level 1 (6 points): between 5 and 7 characters level 2 (12 points): between 8 and 15 characters level 3 (18 points): 16 or more characters letters: level 0 (0 points): no letters level 1 (5 points): all letters are lower case level 2 (7 points): letters are mixed case numbers: level 0 (0 points): no numbers exist level 1 (5 points): one number exists level 1 (7 points): 3 or more numbers exists special characters: level 0 (0 points): no special characters level 1 (5 points): one special character exists level 2 (10 points): more than one special character exists combinatons: level 0 (1 points): letters and numbers exist level 1 (1 points): mixed case letters level 1 (2 points): letters, numbers and special characters exist level 1 (2 points): mixed case letters, numbers and special characters exist NOTE: Because I suck at regex the code might need work NOTE: Instead of putting out all the logging information, the score, and the verdict it would be nicer to stretch a graphic as a method of presenting a visual strength guage. ************************************************************ */ var pw=document.getElementById('passformInput'); pw.addEventListener('keyup',function(){ var max=18; pw.setAttribute('maxlength', max); var val=pw.value; var len=val.length; var mat=val.match; var noch=max-len; var intScore = 0 var strVerdict = "schwach" var strLog = "" document.getElementById('lengout').innerHTML='Noch '+noch; if (len<5){ intScore = (intScore+3) strLog = strLog + "3 Punkte für die Länge (" + len + ")\n"; } else if (len>4 && len<8) { intScore = (intScore+6) strLog = strLog + "6 Punkte für die Länge (" + len + ")\n"; } else if (len>7 && len<16) { intScore = (intScore+12) strLog = strLog + "12 Punkte für die Länge (" + len + ")\n"; } else if (len>15) { intScore = (intScore+18) strLog = strLog + "18 Punkte für die Länge (" + len + ")\n"; } if (val.match(/[a-z]/)) { intScore = (intScore+1) strLog = strLog + "1 Punkt für mindestens einen Kleinbuchstaben\n" } if (val.match(/[A-Z]/)) { intScore = (intScore+5) strLog = strLog + "5 Punkte für mindestens einen Großbuchstaben\n" } if (val.match(/\d+/)) { intScore = (intScore+5) strLog = strLog + "5 Punkte für mindestens eine Ziffer\n" } if (val.match(/(.*[0-9].*[0-9].*[0-9])/)) { intScore = (intScore+5) strLog = strLog + "5 Punkte für mindestens drei Ziffern\n" } if (val.match(/.[!,@,#,$,%,^,&,*,?,_,~]/)) { intScore = (intScore+5) strLog = strLog + "5 Punkte für mindestens ein Sonderzeichen\n" } if (val.match(/(.*[!,@,#,$,%,^,&,*,?,_,~].*[!,@,#,$,%,^,&,*,?,_,~])/)) { intScore = (intScore+5) strLog = strLog + "5 Punkte für mindestens zwei Sonderzeichen\n" } if (val.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) { intScore = (intScore+2) strLog = strLog + "2 Zusatzpunkte für Klein- und Großbuchstaben\n" } if (val.match(/([a-zA-Z])/) && val.match(/([0-9])/)) { intScore = (intScore+2) strLog = strLog + "2 Zusatzpunkte für Buchstaben und Ziffern\n" } if (val.match(/([a-zA-Z0-9].*[!,@,#,$,%,^,&,*,?,_,~])|([!,@,#,$,%,^,&,*,?,_,~].*[a-zA-Z0-9])/)){ intScore = (intScore+2) strLog = strLog + "2 Zusatzpunkte für Buchstaben, Ziffern und Sonderzeichen\n" } if(intScore < 16){ strVerdict = "sehr schwach" }else if (intScore > 15 && intScore < 25){ strVerdict = "schwach" }else if (intScore > 24 && intScore < 35){ strVerdict = "mittelstark" } else if (intScore > 34 && intScore < 45){ strVerdict = "stark" }else if(intScore>=50){ intScore=50; strVerdict = "sehr stark" } pro1=100/max*len; pro=100/44*intScore; pro4=pro1+pro; pro3=pro4/2; // console.log(pro1+'<br>'+pro+'<br>'+pro4+'<br>'+pro3); document.forms.passwordForm.score.value = (intScore) document.forms.passwordForm.verdict.value = (strVerdict+' = '+pro3+' %') document.forms.passwordForm.matchlog.value = (strLog) }) </script>