Aktionen

Passwortgenerator: Unterschied zwischen den Versionen

Aus znilwiki

KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
 
(24 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
<html lang="de">
<html lang="de">
<head>
  <head>
  <meta charset="UTF-8">
      <meta charset="UTF-8">
  <title>Passwortgenerator</title>
      <title>Passwortgenerator</title>
  <style>
      <style>
    label, input, select, textarea, button {
        label, input, select, textarea, button {
      font-family: "Consolas", monospace;
        font-family: "Consolas", monospace;
      margin: 5px 0;
        margin: 5px 0;
      size 20;
        size 26;
    }
        }
    .form-field {
        .form-field {
      margin-bottom: 10px;
        margin-bottom: 10px;
    }
        }
  </style>
      </style>
</head>
  </head>
<body>
  <body>
<p style="font-family: "Consolas", monospace; padding: 20px; margin: 20px">
      <p style="font-family: "Consolas", monospace; padding: 20px; margin: 20px">
<div class="Passwortgenerator-links"  style="float: left; width: 50%;">
      <div class="Passwortgenerator-links"  style="float: left; width: 50%;">
  <div class="form-field">
        <div class="form-field">
    <label for="length">Passwortlänge:</label>
            <label for="length">Passwortlänge:</label>
    <input type="number" id="length" value="16">
            <input type="number" id="length" value="17">
  </div>
        </div>
 
        <div class="form-field">
  <div class="form-field">
            <label for="vowels">Vokale:</label>
    <label for="vowels">Vokale:</label>
            <input type="text" id="vowels" value="aeiou">
    <input type="text" id="vowels" value="aeiou">
        </div>
  </div>
        <div class="form-field">
 
            <label for="consonants">Konsonanten:</label>
  <div class="form-field">
            <input type="text" id="consonants" value="bcdfghjklmnpqrstvwxyz">
    <label for="consonants">Konsonanten:</label>
        </div>
    <input type="text" id="consonants" value="bcdfghjklmnpqrstvwxyz">
        <div class="form-field">
  </div>
            <label for="digits">Zahlen:</label>
 
            <input type="text" id="digits" value="0123456789">
  <div class="form-field">
        </div>
    <label for="digits">Zahlen:</label>
        <div class="form-field">
    <input type="text" id="digits" value="0123456789">
            <label for="numDigits">Zahlen Anzahl der Stellen:</label>
  </div>
            <input type="number" id="numDigits" value="4">
 
        </div>
  <div class="form-field">
        <div class="form-field">
    <label for="numDigits">Zahlen Anzahl der Stellen:</label>
            <label for="specials">Sonderzeichen:</label>
    <input type="number" id="numDigits" value="4">
            <input type="text" id="specials" value="!$%&/=?+*#-.">
  </div>
        </div>
 
        <div class="form-field">
  <div class="form-field">
            <label for="count">Anzahl der Passwörter:</label>
    <label for="specials">Sonderzeichen:</label>
            <select id="count">
    <input type="text" id="specials" value="!$%&/=?+*#-.">
              <option value="1">1</option>
  </div>
              <option value="3">3</option>
 
              <option value="8" selected>8</option>
  <div class="form-field">
              <option value="10">10</option>
    <label for="count">Anzahl der Passwörter:</label>
              <option value="25">25</option>
    <select id="count">
              <option value="50">50</option>
      <option value="1">1</option>
              <option value="100">100</option>
      <option value="3">3</option>
            </select>
      <option value="8" selected>8</option>
        </div>
      <option value="10">10</option>
        <div class="form-field">
      <option value="25">25</option>
            <button id="generate">Passwörter erstellen</button>
      <option value="50">50</option>
        </div>
      <option value="100">100</option>
        <div class="form-field">
    </select>
            <textarea id="output" rows="10" cols="80" placeholder="Erzeugte Passwörter erscheinen hier..."></textarea>
  </div>
        </div>
 
        <script>
  <div class="form-field">
            window.addEventListener("load", function() {
    <button id="generate">Passwörter erstellen</button>
              document.getElementById("generate").addEventListener("click", function() {
  </div>
                // Werte aus dem Formular einlesen
 
                var totalLength = parseInt(document.getElementById("length").value, 10);
  <div class="form-field">
                var vowels = document.getElementById("vowels").value;
    <textarea id="output" rows="10" cols="80" placeholder="Erzeugte Passwörter erscheinen hier..."></textarea>
                var consonants = document.getElementById("consonants").value;
  </div>
                var digitsAllowed = document.getElementById("digits").value;
 
                var numDigits = parseInt(document.getElementById("numDigits").value, 10);
  <script>
                var specials = document.getElementById("specials").value;
    window.addEventListener("load", function() {
                var passwordCount = parseInt(document.getElementById("count").value, 10);
      document.getElementById("generate").addEventListener("click", function() {
               
        // Werte aus dem Formular einlesen
                var output = "";
        var totalLength = parseInt(document.getElementById("length").value, 10);
               
        var vowels = document.getElementById("vowels").value;
                // Hilfsfunktion: Zufälliges Zeichen aus einem String auswählen
        var consonants = document.getElementById("consonants").value;
                function randomChar(str) {
        var digitsAllowed = document.getElementById("digits").value;
                  return str.charAt(Math.floor(Math.random() * str.length));
        var numDigits = parseInt(document.getElementById("numDigits").value, 10);
                }
        var specials = document.getElementById("specials").value;
               
        var passwordCount = parseInt(document.getElementById("count").value, 10);
                // Hilfsfunktion: Erzeuge eine abwechselnde Zeichenkette (Vokal/Konsonant) der Länge "length"
       
                function generateAlternatingSequence(length, vowels, consonants) {
        var output = "";
                  if(length <= 0) return "";
       
                  var sequence = "";
        // Hilfsfunktion: Zufälliges Zeichen aus einem String auswählen
                  // Zufällig entscheiden, ob mit Vokal oder Konsonant gestartet wird
        function randomChar(str) {
                  var useVowel = Math.random() < 0.5;
          return str.charAt(Math.floor(Math.random() * str.length));
                  for(var i = 0; i < length; i++){
        }
                    sequence += useVowel ? randomChar(vowels) : randomChar(consonants);
       
                    useVowel = !useVowel;
        // Hilfsfunktion: Erzeuge eine abwechselnde Zeichenkette (Vokal/Konsonant) der Länge "length"
                  }
        function generateAlternatingSequence(length, vowels, consonants) {
                  return sequence;
          if(length <= 0) return "";
                }
          var sequence = "";
               
          // Zufällig entscheiden, ob mit Vokal oder Konsonant gestartet wird
                // Passwortgenerierungsschleife
          var useVowel = Math.random() < 0.5;
                for(var p = 0; p < passwordCount; p++){
          for(var i = 0; i < length; i++){
                  // Berechne die Länge des nicht-numerischen Teils
            sequence += useVowel ? randomChar(vowels) : randomChar(consonants);
                  // noch mal 1 abziehen wegen 2. Sonderzeichen vor den Zahlen
            useVowel = !useVowel;
                  letterSectionLength = letterSectionLength -1;
          }
                  var letterSectionLength = totalLength - numDigits;
          return sequence;
                  // 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
        // Passwortgenerierungsschleife
                  var adjustment = [-1, 0, 1][Math.floor(Math.random() * 3)];
        for(var p = 0; p < passwordCount; p++){
                  var firstPartLength = baseFirstPart + adjustment;
          // Berechne die Länge des nicht-numerischen Teils
                  // Sicherstellen, dass der erste Teil in einen sinnvollen Bereich fällt
          var letterSectionLength = totalLength - numDigits;
                  if(firstPartLength < 0) firstPartLength = 0;
          // Bestimme die Basislänge für den ersten Buchstabenteil: (letterSectionLength - 1) geteilt durch 2, gerundet
                  if(firstPartLength > letterSectionLength - 1) firstPartLength = letterSectionLength - 1;
          var baseFirstPart = Math.round((letterSectionLength - 1) / 2);
                  // Die Länge des zweiten Buchstabenteils ergibt sich aus dem Rest (ein Sonderzeichen wird noch dazwischen gesetzt)
          // Zufällige Anpassung um -1, 0 oder 1
                  var secondPartLength = letterSectionLength - firstPartLength - 1;
          var adjustment = [-1, 0, 1][Math.floor(Math.random() * 3)];
                 
          var firstPartLength = baseFirstPart + adjustment;
                  // Erzeuge den ersten alternierenden Buchstabenteil
          // Sicherstellen, dass der erste Teil in einen sinnvollen Bereich fällt
                  var firstPart = generateAlternatingSequence(firstPartLength, vowels, consonants);
          if(firstPartLength < 0) firstPartLength = 0;
                  // Erzeuge den zweiten alternierenden Buchstabenteil
          if(firstPartLength > letterSectionLength - 1) firstPartLength = letterSectionLength - 1;
                  var secondPart = generateAlternatingSequence(secondPartLength, vowels, consonants);
          // Die Länge des zweiten Buchstabenteils ergibt sich aus dem Rest (ein Sonderzeichen wird noch dazwischen gesetzt)
                 
          var secondPartLength = letterSectionLength - firstPartLength - 1;
                  // Stelle sicher, dass der erste Buchstabe beider Wörter groß geschrieben wird, falls vorhanden
         
                  if(firstPart.length > 0) {
          // Erzeuge den ersten alternierenden Buchstabenteil
                    firstPart = firstPart.charAt(0).toUpperCase() + firstPart.slice(1);
          var firstPart = generateAlternatingSequence(firstPartLength, vowels, consonants);
                  }
          // Erzeuge den zweiten alternierenden Buchstabenteil
                  if(secondPart.length > 0) {
          var secondPart = generateAlternatingSequence(secondPartLength, vowels, consonants);
                    secondPart = secondPart.charAt(0).toUpperCase() + secondPart.slice(1);
         
                  }
          // Stelle sicher, dass der erste Buchstabe beider Wörter groß geschrieben wird, falls vorhanden
                 
          if(firstPart.length > 0) {
                  // Zufälliges Sonderzeichen zwischen den Wörtern auswählen
            firstPart = firstPart.charAt(0).toUpperCase() + firstPart.slice(1);
                  var specialChar1 = randomChar(specials);
          }
                  // Zufälliges Sonderzeichen zwischen Wörtern und Zahl auswählen
          if(secondPart.length > 0) {
                  var specialChar2 = randomChar(specials);
            secondPart = secondPart.charAt(0).toUpperCase() + secondPart.slice(1);
                 
          }
                  // Erzeuge den numerischen Teil (Ziffern)
         
                  var digitSequence = "";
          // Zufälliges Sonderzeichen auswählen
                  for(var d = 0; d < numDigits; d++){
          var specialChar = randomChar(specials);
                    digitSequence += randomChar(digitsAllowed);
         
                  }
          // Erzeuge den numerischen Teil (Ziffern)
                 
          var digitSequence = "";
                  // Komplettes Passwort zusammensetzen
          for(var d = 0; d < numDigits; d++){
                  var password = firstPart + specialChar1 + secondPart + specialChar2 + digitSequence;
            digitSequence += randomChar(digitsAllowed);
                  output += password + "\n";
          }
                }
         
               
          // Komplettes Passwort zusammensetzen
                // Ausgabe in das Textfeld schreiben
          var password = firstPart + specialChar + secondPart + digitSequence;
                document.getElementById("output").value = output;
          output += password + "\n";
              });
        }
            });
       
        </script>
        // Ausgabe in das Textfeld schreiben
      </div>
        document.getElementById("output").value = output;
      <div class="Passwortgenerator-rechts" style="float: right; width: 47%;">
      });
        <strong>Der Passwortgenerator funktioniert nach folgenden Regeln:</strong><br>
    });
        <ul>
  </script>
            <li>Hinten werden Zahlen angehängt</li>
</div>
            <li>Die Zahl besteht aus den Ziffern die in dem Feld vorkommen (man kann auch was anderes hinzufügen oder löschen)</li>
<div class="Passwortgenerator-rechts" style="float: right; width: 50%;">
            <li>Die Anzahl der Stellen ist festgelegt, z.B. auf 4</li>
<p stype="margin-left=50px">
            <li>Die Gesamtlänge - Anzahl der Stellen ergibt die Restlänge</li>
Hallo
            <li>Von dieser Restlänge wird 2 abgezogen, 1 für das Sonderzeichen zwischen den Wörtern und 1 für das Sonderzeichen zwischen dem 2. Wort und der angehängten Zahl. Bei 17 Zeichen - 4 Zahlen - 2 Sonderzeichen bleibt also 11.</li>
</p>
            <li>Diese Restlänge wird durch 2 geteilt. Ggf. wird dabei aufgerundet. Das ergibt die Länge des ersten Wortes, z.B. 6</li>
</div>
            <li>Diese Länge wird zufällig um 1 erhöht oder verringert  oder unverändert gelassen. Die neue Länge ist in diesem Beispiel also 5, 6 oder 7</li>
</p>
            <li>Für den ersten Teil wird zufällig entschieden ob mit einem Vokal oder einen Konsonanten begonnen wird<li>
</body>
            <li>Es werden nun abwechseln Konsonanten und Vokale aneinander gereiht bis die Wortlänge erreicht ist</li>
            <li>Der erste Buchstabe wird in einen Großbuchstaben geändert</li>
            <li>Es wird ein Sonderzeichen angehängt</li>
            <li>Das zweite Wort wird nach den gleichen Regeln wie das erste erzeugt. Also wieder zufällig ob Konsonant oder Vokal, danach abwechselnd, erster Buchstabe groß</li>
            <li>Danach wird das 2. Sonderzeichen und die Zahl angehängt</li>
        </ul>
        <br>
        Das ganze habe ich erstellt weil ich sehr gerne den <a target="_blank" rel="noopener noreferrer" href="https://www.gaijin.at/de/tools/password-generator">Gaijin Password Generator</a> benutze.<br>
        Dort insbesondere die <b>Internet-Passwörter 3 (14 Zeichen)</b><br>
        Wenn man aber weis das ich das gerne mache, ließen sich meine Passwörter so leicht erraten. Ich habe dann schon immer variiert bzw. mehrere dieser Kennwörter hintereinander gehängt.<br>
        Der Generator hier verwendet mehr Zufälle und variiert auch die Länge der Wörter und Zahlen auf Wunsch.
        Ich mag einfach das dabei künstliche Wörter herauskommen die sich leichter Tippen und bei Bedarf sogar merken lassen.<br>
      </div>
      </p>
  </body>
</html>
</html>
----
<u>'''Changelog:'''</u>
* 22.02.2025 erste Version
* 09.06.2025 Länge auf 17 Zeichen erhöht, 2. Sonderzeichen vor der Zahl, Beschreibung angepasst
* 09.07.2025 Fehler Sonderzeichen behoben, es wurde 2 mal das gleiche genommen
----
<comments />

Aktuelle Version vom 9. Juli 2025, 13:10 Uhr

Passwortgenerator

Der Passwortgenerator funktioniert nach folgenden Regeln:
  • Hinten werden Zahlen angehängt
  • Die Zahl besteht aus den Ziffern die in dem Feld vorkommen (man kann auch was anderes hinzufügen oder löschen)
  • Die Anzahl der Stellen ist festgelegt, z.B. auf 4
  • Die Gesamtlänge - Anzahl der Stellen ergibt die Restlänge
  • Von dieser Restlänge wird 2 abgezogen, 1 für das Sonderzeichen zwischen den Wörtern und 1 für das Sonderzeichen zwischen dem 2. Wort und der angehängten Zahl. Bei 17 Zeichen - 4 Zahlen - 2 Sonderzeichen bleibt also 11.
  • Diese Restlänge wird durch 2 geteilt. Ggf. wird dabei aufgerundet. Das ergibt die Länge des ersten Wortes, z.B. 6
  • Diese Länge wird zufällig um 1 erhöht oder verringert oder unverändert gelassen. Die neue Länge ist in diesem Beispiel also 5, 6 oder 7
  • Für den ersten Teil wird zufällig entschieden ob mit einem Vokal oder einen Konsonanten begonnen wird
  • Es werden nun abwechseln Konsonanten und Vokale aneinander gereiht bis die Wortlänge erreicht ist
  • Der erste Buchstabe wird in einen Großbuchstaben geändert
  • Es wird ein Sonderzeichen angehängt
  • Das zweite Wort wird nach den gleichen Regeln wie das erste erzeugt. Also wieder zufällig ob Konsonant oder Vokal, danach abwechselnd, erster Buchstabe groß
  • Danach wird das 2. Sonderzeichen und die Zahl angehängt

Das ganze habe ich erstellt weil ich sehr gerne den Gaijin Password Generator benutze.
Dort insbesondere die Internet-Passwörter 3 (14 Zeichen)
Wenn man aber weis das ich das gerne mache, ließen sich meine Passwörter so leicht erraten. Ich habe dann schon immer variiert bzw. mehrere dieser Kennwörter hintereinander gehängt.
Der Generator hier verwendet mehr Zufälle und variiert auch die Länge der Wörter und Zahlen auf Wunsch. Ich mag einfach das dabei künstliche Wörter herauskommen die sich leichter Tippen und bei Bedarf sogar merken lassen.


Changelog:

  • 22.02.2025 erste Version
  • 09.06.2025 Länge auf 17 Zeichen erhöht, 2. Sonderzeichen vor der Zahl, Beschreibung angepasst
  • 09.07.2025 Fehler Sonderzeichen behoben, es wurde 2 mal das gleiche genommen

Loading comments...