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>