Testbereich: Unterschied zwischen den Versionen
Aus znilwiki
BLinz (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
BLinz (Diskussion | Beiträge) KKeine Bearbeitungszusammenfassung |
||
| Zeile 1: | Zeile 1: | ||
<head> | <head> | ||
<meta charset="UTF-8"> | <meta charset="UTF-8"> | ||
| Zeile 7: | Zeile 6: | ||
font-family: "Consolas", monospace; | font-family: "Consolas", monospace; | ||
margin: 5px 0; | margin: 5px 0; | ||
size 20; | |||
} | } | ||
.form-field { | .form-field { | ||
Version vom 22. Februar 2025, 13:42 Uhr
<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>
