Aktionen

Testbereich

Aus znilwiki

<head>

 <meta charset="UTF-8">
 <title>Passwortgenerator</title>
 <style>
   label, input, select, textarea, button {
     font-family: "Consolas", monospace;
     margin: 5px 0;
     size 20;
   }
   .form-field {
     margin-bottom: 10px;
   }
 </style>

</head> <body>

   <label for="length">Passwortlänge........:</label>
   <input type="number" id="length" value="16">
   <label for="vowels">Vokale...............:</label>
   <input type="text" id="vowels" value="aeiou">
   <label for="consonants">Konsonanten..........:</label>
   <input type="text" id="consonants" value="bcdfghjklmnpqrstvwxyz">
   <label for="digits">Zahlen...............:</label>
   <input type="text" id="digits" value="0123456789">
   <label for="numDigits">Stellen..............:</label>
   <input type="number" id="numDigits" value="4">
   <label for="specials">Sonderzeichen........:</label>
   <input type="text" id="specials" value="!$%&/=?+*#-.">
   <label for="count">Anzahl der Passwörter:</label>
   <select id="count">
     <option value="1">1</option>
     <option value="3">3</option>
     <option value="8" selected>8</option>
     <option value="10">10</option>
     <option value="25">25</option>
     <option value="50">50</option>
     <option value="100">100</option>
   </select>
   <button id="generate">Passwörter erstellen</button>
   <textarea id="output" rows="10" cols="80" placeholder="Erzeugte Passwörter erscheinen hier..."></textarea>
 <script>
   document.getElementById("generate").addEventListener("click", function() {
     // Werte aus dem Formular einlesen
     var totalLength = parseInt(document.getElementById("length").value, 10);
     var vowels = document.getElementById("vowels").value;
     var consonants = document.getElementById("consonants").value;
     var digitsAllowed = document.getElementById("digits").value;
     var numDigits = parseInt(document.getElementById("numDigits").value, 10);
     var specials = document.getElementById("specials").value;
     var passwordCount = parseInt(document.getElementById("count").value, 10);
     
     var output = "";
     
     // Hilfsfunktion: Zufälliges Zeichen aus einem String auswählen
     function randomChar(str) {
       return str.charAt(Math.floor(Math.random() * str.length));
     }
     
     // Hilfsfunktion: Erzeuge eine abwechselnde Zeichenkette (Vokal/Konsonant) der Länge "length"
     function generateAlternatingSequence(length, vowels, consonants) {
       if(length <= 0) return "";
       var sequence = "";
       // Zufällig entscheiden, ob mit Vokal (true) oder Konsonant (false) gestartet wird
       var useVowel = Math.random() < 0.5;
       for(var i = 0; i < length; i++){
         sequence += useVowel ? randomChar(vowels) : randomChar(consonants);
         useVowel = !useVowel;
       }
       return sequence;
     }
     
     // Passwortgenerierungsschleife
     for(var p = 0; p < passwordCount; p++){
       // Berechne die Länge des nicht-numerischen Teils
       var letterSectionLength = totalLength - numDigits;
       // Bestimme die Basislänge für den ersten Buchstabenteil: (letterSectionLength - 1) geteilt durch 2, gerundet
       var baseFirstPart = Math.round((letterSectionLength - 1) / 2);
       // Zufällige Anpassung um -1, 0 oder 1
       var adjustment = [-1, 0, 1][Math.floor(Math.random() * 3)];
       var firstPartLength = baseFirstPart + adjustment;
       // Sicherstellen, dass der erste Teil in einen sinnvollen Bereich fällt
       if(firstPartLength < 0) firstPartLength = 0;
       if(firstPartLength > letterSectionLength - 1) firstPartLength = letterSectionLength - 1;
       // Die Länge des zweiten Buchstabenteils ergibt sich aus dem Rest (ein Sonderzeichen wird noch dazwischen gesetzt)
       var secondPartLength = letterSectionLength - firstPartLength - 1;
       
       // Erzeuge den ersten alternierenden Buchstabenteil
       var firstPart = generateAlternatingSequence(firstPartLength, vowels, consonants);
       // Zufälliges Sonderzeichen auswählen
       var specialChar = randomChar(specials);
       // Erzeuge den zweiten alternierenden Buchstabenteil
       var secondPart = generateAlternatingSequence(secondPartLength, vowels, consonants);
       // Erzeuge den numerischen Teil (Ziffern)
       var digitSequence = "";
       for(var d = 0; d < numDigits; d++){
         digitSequence += randomChar(digitsAllowed);
       }
       
       // Komplettes Passwort zusammensetzen
       var password = firstPart + specialChar + secondPart + digitSequence;
       output += password + "\n";
     }
     
     // Ausgabe in das Textfeld schreiben
     document.getElementById("output").value = output;
   });
 </script>

</body> </html>