Aktionen

Testbereich: Unterschied zwischen den Versionen

Aus znilwiki

K (Die Seite wurde geleert.)
Markierung: Geleert
KKeine Bearbeitungszusammenfassung
 
(10 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

Passwortgenerator