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ärke: <input type="text" name="score" size="3" readonly="readonly"> 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>