Advertisement
EurenikZ

Simple Passwort Generator Website

Dec 19th, 2024 (edited)
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.     <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
  5.     <title>Passwort-Generator</title>
  6.     <style>
  7.         body {
  8.             font-family: Arial, sans-serif;
  9.             background-color: #f4f4f9;
  10.             color: #333;
  11.             display: flex;
  12.             justify-content: center;
  13.             align-items: flex-start;
  14.             margin: 0;
  15.             padding-top: 200px;
  16.         }
  17.  
  18.         #length-slider {
  19.             width: 300px;
  20.         }
  21.  
  22.         .container {
  23.             text-align: center;
  24.             background-color: #ffffff;
  25.             border-radius: 10px;
  26.             box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1);
  27.             padding: 20px;
  28.             width: 350px;
  29.         }
  30.  
  31.         label, #length-display {
  32.             font-size: 18px;
  33.             font-weight: bold;
  34.             margin-bottom: 10px;
  35.             display: block;
  36.         }
  37.  
  38.         #generate-button {
  39.             background-color: #007bff;
  40.             color: #fff;
  41.             border: none;
  42.             border-radius: 5px;
  43.             padding: 10px 20px;
  44.             font-size: 16px;
  45.             cursor: pointer;
  46.             transition: background-color 0.3s ease;
  47.         }
  48.  
  49.         #generate-button:hover {
  50.             background-color: #0056b3;
  51.         }
  52.  
  53.         #password-field {
  54.             text-align: center;
  55.             width: 80%;
  56.             margin: 15px auto;
  57.             border: 1px solid #ccc;
  58.             border-radius: 5px;
  59.             padding: 10px;
  60.             box-sizing: border-box;
  61.             background-color: #f9f9f9;
  62.             font-family: monospace;
  63.             font-size: 14px;
  64.         }
  65.  
  66.         #copied-text {
  67.             font-size: 16px;
  68.             color: #28a745;
  69.             display: none;
  70.         }
  71.  
  72.         #copied-text.active {
  73.             display: block;
  74.         }
  75.     </style>
  76. </head>
  77. <body>
  78.     <div class="container">
  79.         <label>Passwortlänge:</label>
  80.         <input type="range" min="8" max="30" value="12" class="slider" id="length-slider">
  81.         <span id="length-display">12</span><br><br>
  82.         <button id="generate-button">Passwort generieren</button>
  83.         <input type="text" id="password-field" value="" readonly>
  84.         <div id="copied-text">Passwort kopiert!</div>
  85.     </div>
  86.  
  87.     <script>
  88.     function generatePassword() {
  89.         const possibleCharacters = [
  90.             ...'234678',
  91.             ...'ACDEFHJKMNPQRTUWXYZ',
  92.             ...'abcdefhjkmnpqrtuwxyz',
  93.             '!', '$', '%', ';', '*', '/', '#', '-', '&'
  94.         ];
  95.  
  96.         const passwordLength = document.querySelector('#length-slider').value;
  97.  
  98.         const password = new Array(passwordLength);
  99.  
  100.         const specialCharacters = ['!', '$', '%', ';', '*', '/', '#', '-', '&'];
  101.  
  102.         password[0] = possibleCharacters.filter(c => !/[^a-zA-Z0-9]/.test(c)).sort(() => Math.random() - 0.5)[0];
  103.  
  104.         password[passwordLength - 1] = possibleCharacters.filter(c => !/[^a-zA-Z0-9]/.test(c)).sort(() => Math.random() - 0.5)[0];
  105.  
  106.         for (let i = 1; i < passwordLength - 1; i++) {
  107.             const prevCharIsSpecial = specialCharacters.includes(password[i - 1]);
  108.  
  109.             password[i] = prevCharIsSpecial
  110.             ? possibleCharacters.filter(c => /[a-zA-Z0-9]/.test(c)).sort(() => Math.random() - 0.5)[0]
  111.             : possibleCharacters.sort(() => Math.random() - 0.5)[0];
  112.         }
  113.  
  114.         password[passwordLength - 1] = possibleCharacters.filter(c => !/[^a-zA-Z0-9]/.test(c)).sort(() => Math.random() - 0.5)[0];
  115.  
  116.         if (!/[^a-zA-Z0-9]/.test(password.join(''))) {
  117.             const index = Math.floor(Math.random() * (passwordLength - 2)) + 1;
  118.             password[index] = specialCharacters[Math.floor(Math.random() * specialCharacters.length)];
  119.         }
  120.  
  121.         return password.join('');
  122.     }
  123.  
  124.     document.querySelector('#generate-button').addEventListener('click', () => {
  125.         document.querySelector('#password-field').value = generatePassword();
  126.     });
  127.  
  128.     document.addEventListener('DOMContentLoaded', () => {
  129.         document.querySelector('#password-field').value = generatePassword();
  130.     });
  131.  
  132.     document.querySelector('#length-slider').addEventListener('input', () => {
  133.         document.querySelector('#length-display').textContent = document.querySelector('#length-slider').value;
  134.     });
  135.  
  136.     document.querySelector('#length-slider').addEventListener('input', () => {
  137.         document.querySelector('#password-field').value = generatePassword();
  138.     });
  139.  
  140.     document.querySelector('#password-field').addEventListener('click', () => {
  141.         document.querySelector('#password-field').select();
  142.         document.execCommand('copy');
  143.  
  144.         $('#copied-text').slideDown(250).delay(2000).slideUp(250);
  145.     });
  146.     </script>
  147.     <script src="https://code.jquery.com/jquery-3.6.3.min.js"></script>
  148. </body>
  149. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement