Testbereich: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
BLinz (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
: | <html lang="de"> | ||
: | <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> | |||
<p style="font-family: "Consolas", monospace; padding: 20px; margin: 20px"> | |||
<div class="form-field"> | |||
<label for="length">Passwortlänge........:</label> | |||
<input type="number" id="length" value="16"> | |||
</div> | |||
<div class="form-field"> | |||
<label for="vowels">Vokale...............:</label> | |||
<input type="text" size="32" id="vowels" value="aeiou"> | |||
</div> | |||
<div class="form-field"> | |||
<label for="consonants">Konsonanten..........:</label> | |||
<input type="text" id="consonants" value="bcdfghjklmnpqrstvwxyz"> | |||
</div> | |||
<div class="form-field"> | |||
<label for="digits">Zahlen...............:</label> | |||
<input type="text" id="digits" value="0123456789"> | |||
</div> | |||
<div class="form-field"> | |||
<label for="numDigits">Stellen..............:</label> | |||
<input type="number" id="numDigits" value="4"> | |||
</div> | |||
<div class="form-field"> | |||
<label for="specials">Sonderzeichen........:</label> | |||
<input type="text" id="specials" value="!$%&/=?+*#-."> | |||
</div> | |||
<div class="form-field"> | |||
<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> | |||
</div> | |||
<div class="form-field"> | |||
<button id="generate">Passwörter erstellen</button> | |||
</div> | |||
<div class="form-field"> | |||
<textarea id="output" rows="10" cols="80" placeholder="Erzeugte Passwörter erscheinen hier..."></textarea> | |||
</div> | |||
<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> | |||
</p> | |||
</body> | |||
</html> |
Aktuelle Version vom 22. Februar 2025, 14:43 Uhr