basti1012.bplaced.net

Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
    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.

    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>