用 Deepseek 寫的 html+js 密碼生成器

下面是一個功能完整的密碼生成器HTML+JS實現,包含數字、小寫字母、大寫字母、符號、避免重復字符和密碼長度設置功能。

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>密碼生成器</title><style>body {font-family: Arial, sans-serif;max-width: 600px;margin: 0 auto;padding: 20px;background-color: #f5f5f5;}.container {background-color: white;padding: 20px;border-radius: 8px;box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);}h1 {text-align: center;color: #333;}.form-group {margin-bottom: 15px;}label {display: block;margin-bottom: 5px;font-weight: bold;}input[type="range"] {width: 100%;}.output {display: flex;margin-top: 20px;}#password {flex-grow: 1;padding: 10px;font-size: 16px;border: 1px solid #ddd;border-radius: 4px 0 0 4px;}button {padding: 10px 15px;background-color: #4CAF50;color: white;border: none;border-radius: 0 4px 4px 0;cursor: pointer;font-size: 16px;}button:hover {background-color: #45a049;}.length-value {display: inline-block;width: 30px;text-align: center;}.strength-meter {height: 5px;background-color: #ddd;margin-top: 10px;border-radius: 5px;overflow: hidden;}.strength-bar {height: 100%;width: 0%;transition: width 0.3s, background-color 0.3s;}</style>
</head>
<body><div class="container"><h1>密碼生成器</h1><div class="form-group"><label for="length">密碼長度: <span id="lengthValue" class="length-value">12</span></label><input type="range" id="length" min="4" max="64" value="12"></div><div class="form-group"><label><input type="checkbox" id="lowercase" checked> 小寫字母 (a-z)</label></div><div class="form-group"><label><input type="checkbox" id="uppercase" checked> 大寫字母 (A-Z)</label></div><div class="form-group"><label><input type="checkbox" id="numbers" checked> 數字 (0-9)</label></div><div class="form-group"><label><input type="checkbox" id="symbols" checked> 符號 (!@#$%^&*等)</label></div><div class="form-group"><label><input type="checkbox" id="noRepeat"> 避免重復字符</label></div><div class="form-group"><label>密碼強度:</label><div class="strength-meter"><div class="strength-bar" id="strengthBar"></div></div></div><div class="output"><input type="text" id="password" readonly><button id="generate">生成</button></div><div class="form-group" style="margin-top: 20px;"><button id="copy" style="width: 100%; border-radius: 4px;">復制密碼</button></div></div><script>document.addEventListener('DOMContentLoaded', function() {// 獲取DOM元素const lengthSlider = document.getElementById('length');const lengthValue = document.getElementById('lengthValue');const lowercaseCheckbox = document.getElementById('lowercase');const uppercaseCheckbox = document.getElementById('uppercase');const numbersCheckbox = document.getElementById('numbers');const symbolsCheckbox = document.getElementById('symbols');const noRepeatCheckbox = document.getElementById('noRepeat');const generateBtn = document.getElementById('generate');const passwordField = document.getElementById('password');const copyBtn = document.getElementById('copy');const strengthBar = document.getElementById('strengthBar');// 字符集const lowercaseChars = 'abcdefghijklmnopqrstuvwxyz';const uppercaseChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';const numberChars = '0123456789';const symbolChars = '!@#$%^&*()_+~`|}{[]\\:;?><,./-=';// 更新長度顯示lengthSlider.addEventListener('input', function() {lengthValue.textContent = this.value;});// 生成密碼generateBtn.addEventListener('click', generatePassword);// 復制密碼copyBtn.addEventListener('click', function() {if (passwordField.value) {passwordField.select();document.execCommand('copy');copyBtn.textContent = '已復制!';setTimeout(() => {copyBtn.textContent = '復制密碼';}, 2000);}});// 初始生成一個密碼generatePassword();function generatePassword() {// 獲取選項const length = parseInt(lengthSlider.value);const includeLower = lowercaseCheckbox.checked;const includeUpper = uppercaseCheckbox.checked;const includeNumbers = numbersCheckbox.checked;const includeSymbols = symbolsCheckbox.checked;const noRepeat = noRepeatCheckbox.checked;// 驗證至少選擇了一個字符集if (!includeLower && !includeUpper && !includeNumbers && !includeSymbols) {alert('請至少選擇一種字符類型!');return;}// 構建可用字符集let chars = '';if (includeLower) chars += lowercaseChars;if (includeUpper) chars += uppercaseChars;if (includeNumbers) chars += numberChars;if (includeSymbols) chars += symbolChars;let password = '';if (noRepeat) {// 避免重復字符的模式if (length > chars.length) {alert(`避免重復字符模式下,密碼長度不能超過可用字符數 (${chars.length})`);return;}// 將字符集轉換為數組并打亂順序const charsArray = chars.split('');shuffleArray(charsArray);// 選取前length個字符password = charsArray.slice(0, length).join('');} else {// 普通模式,允許重復字符for (let i = 0; i < length; i++) {const randomIndex = Math.floor(Math.random() * chars.length);password += chars[randomIndex];}}// 顯示密碼passwordField.value = password;// 更新強度條updateStrengthBar(password);}// 打亂數組順序 (Fisher-Yates算法)function shuffleArray(array) {for (let i = array.length - 1; i > 0; i--) {const j = Math.floor(Math.random() * (i + 1));[array[i], array[j]] = [array[j], array[i]];}return array;}// 更新密碼強度條function updateStrengthBar(password) {let strength = 0;// 長度評分if (password.length >= 12) strength += 2;else if (password.length >= 8) strength += 1;// 字符種類評分const hasLower = /[a-z]/.test(password);const hasUpper = /[A-Z]/.test(password);const hasNumber = /[0-9]/.test(password);const hasSymbol = /[^a-zA-Z0-9]/.test(password);const charTypes = [hasLower, hasUpper, hasNumber, hasSymbol].filter(Boolean).length;strength += charTypes - 1; // 每多一種類型加1分// 更新UIlet width = 0;let color = '#ff0000'; // 紅色if (strength <= 1) {width = 25;color = '#ff0000'; // 弱 - 紅色} else if (strength <= 3) {width = 50;color = '#ff9900'; // 中等 - 橙色} else if (strength <= 5) {width = 75;color = '#33cc33'; // 強 - 綠色} else {width = 100;color = '#009900'; // 非常強 - 深綠色}strengthBar.style.width = width + '%';strengthBar.style.backgroundColor = color;}});</script>
</body>
</html>

功能說明

這個密碼生成器包含以下功能:

  1. 密碼長度控制:通過滑塊可以設置4到64位的密碼長度

  2. 字符類型選擇

    • 小寫字母 (a-z)

    • 大寫字母 (A-Z)

    • 數字 (0-9)

    • 符號 (!@#$%^&*等)

  3. 避免重復字符:勾選后生成的密碼不會包含重復字符

  4. 密碼強度指示:根據密碼長度和使用的字符類型顯示強度條

  5. 一鍵復制:方便復制生成的密碼

  6. 響應式設計:適配不同屏幕尺寸

使用方法

  1. 調整滑塊設置密碼長度

  2. 選擇需要的字符類型(至少選擇一種)

  3. 如需避免重復字符,勾選相應選項

  4. 點擊"生成"按鈕創建密碼

  5. 點擊"復制密碼"按鈕將密碼復制到剪貼板

您可以根據需要進一步自定義樣式或添加更多功能。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/84892.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/84892.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/84892.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

WPF綁定

如何使用綁定去改變事件驅動的關系。 先介紹一下標簽擴展 目錄 控件與控件之間的綁定 代碼分析 綁定語法詳解 1. Binding - 綁定標記 2. ElementName=slider - 綁定源 3. Path=Value - 綁定路徑 不同控件屬性的默認模式: 控件和屬性綁定 1. 數據模型類的作用 2. 窗…

同源“平滑思想”的問題解法:正則化與拉普拉斯平滑

同源“平滑思想”的問題解法&#xff1a;正則化與拉普拉斯平滑 在機器學習和概率模型的實踐中&#xff0c;正則化與拉普拉斯平滑是兩個看似無關的技術&#xff1a;前者用于防止模型過擬合&#xff0c;后者用于解決零概率問題。但如果深入理解它們的核心邏輯&#xff0c;會發現…

用 AI 讓學習更懂你:如何打造自動化個性化學習系統?

用 AI 讓學習更懂你:如何打造自動化個性化學習系統? 在這個信息爆炸的時代,傳統的學習方式已經難以滿足個體化需求。過去,我們依賴固定的教學課程,所有學生按照統一進度進行學習,但每個人的學習節奏、興趣點和理解方式都不盡相同。而人工智能(AI)正在徹底改變這一局面…

PyQt學習系列08-插件系統與模塊化開發

PyQt學習系列筆記&#xff08;Python Qt框架&#xff09; 第八課&#xff1a;插件系統與模塊化開發 &#xff08;原課程規劃中的第12課&#xff0c;按用戶要求調整為第9課&#xff09; 課程目標 掌握Qt插件系統的原理與開發方法實現可擴展的模塊化應用程序理解QPluginLoader動…

rlemasklib 安裝筆記

目錄 windows 安裝&#xff0c;沒成功 報錯筆記&#xff1a; windows 安裝&#xff0c;沒成功 anslation_unit.obj -Wno-cpp -Wno-unused-function -stdc99 -O3 cl: 命令行 error D8021 :無效的數值參數“/Wno-cpp” error: command C:\\Program Files\\Microso…

Ubuntu 系統grub日志級別設置

在 Ubuntu 系統中&#xff0c;GRUB 的日志級別主要與內核日志級別&#xff08;loglevel&#xff09;相關&#xff0c;而不是 GRUB 自身的日志級別。內核日志級別通常從 0 到 7&#xff0c;其中 0 是最高級別&#xff08;最嚴重&#xff09;&#xff0c;7 是最低級別&#xff08…

【前端】使用HTTPS

在前端本地開發環境中使用 HTTPS 主要取決于你用的是哪個構建工具&#xff08;如 Vite、Webpack、Vue CLI 等&#xff09;。 目錄 ViteWebpack本地生產環境 npx serve瀏覽器提示“不安全”解決方法上傳github注意不要把key傳上去 Vite npm install --save-dev types/node #安…

Python 包管理工具 uv的一些常用指令

1.如何安裝uv&#xff1a; 在Windows下&#xff0c;執行下面的指令&#xff1a; powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" 安裝很快&#xff0c;安裝完成后&#xff0c;會出現&#xff1a; 接著&#xff0c;我們運行指…

行為型:策略模式

目錄 1、核心思想 2、實現方式 2.1 模式結構 2.2 實現案例 3、優缺點分析 4、適用場景 5、優化技巧 1、核心思想 目的&#xff1a;將算法&#xff08;行為&#xff09;抽象出來作為一系列策略類&#xff0c;使他們可以相互替換&#xff0c;使系統擁有“可插拔”擴展的能…

計算機網絡學習20250524

協議 格式—語法&#xff1a;數據結構或格式&#xff08;怎么做&#xff09;次序—時序&#xff1a;事件實現的順序&#xff08;做的順序&#xff09;行為動作—語義&#xff1a;發出什么控制信息&#xff0c;完成何種動作、做出何種應答 網絡結構 網絡邊緣&#xff1a;主機…

Github 2025-05-24 Rust開源項目日報 Top10

根據Github Trendings的統計,今日(2025-05-24統計)共有10個項目上榜。根據開發語言中項目的數量,匯總情況如下: 開發語言項目數量Rust項目10TypeScript項目2Dart項目1Tauri: 構建小型、快速和安全的桌面應用程序 創建周期:1673 天開發語言:Rust協議類型:Apache License 2…

數據結構之堆(topk問題、堆排序)

一、堆的初步認識 堆雖然是用數組存儲數據的數據結構&#xff0c;但是它的底層卻是另一種表現形式。 堆分為大堆和小堆&#xff0c;大堆是所有父親大于孩子&#xff0c;小堆是所有孩子大于父親。 通過分析我們能得出父子關系的計算公式&#xff0c;parent(child-1)/2&#xff…

0基礎 Git 代碼操作

將代碼提交倉庫&#xff1a; 準備工作? ?注冊 Gitee 賬號?&#xff1a;確保你已注冊并登錄 Gitee。?創建倉庫?&#xff1a;在 Gitee 上新建一個空倉庫&#xff08;如果尚未創建&#xff09;&#xff1a; 點擊右上角 → 新建倉庫。填寫倉庫名稱、描述&#xff0c;選擇公…

OpenAI大模型不聽人類指令事件的技術分析與安全影響

OpenAI大模型不聽人類指令事件的技術分析與安全影響 OpenAI大模型o3確實存在不遵從人類關閉指令的現象&#xff0c;這一行為已被第三方安全機構驗證&#xff0c;但其本質是技術缺陷而非AI意識覺醒。帕利塞德研究所的測試顯示&#xff0c;在100次實驗中o3有7次成功繞過關閉指令…

軟件工程期末速成--附帶幾道題

軟件工程中的各種設計 瀑布模型&#xff1a; 定義&#xff1a;將軟件生存周期的各項活動規定為依照固定順序連接的若干階段工作&#xff0c;形如瀑布流水&#xff0c;最終得到軟件產品 系統流程圖&#xff1a;系統流程圖是描繪物理系統的傳統工具&#xff0c;它的基本思想是用…

免費分享50本web全棧學習電子書

最近搞到一套非常不錯的 Web 全棧電子書合集&#xff0c;整整 50 本&#xff0c;都是epub電子書格式&#xff0c;相當贊&#xff01;作為一個被期末大作業和項目 ddl 追著跑的大學生&#xff0c;這套書真的救我狗命&#xff01; 剛接觸 Web 開發的時候&#xff0c;我天天對著空…

嵌入式學習筆記——day26

文件操作&#xff08;續&#xff09;目錄操作 一、文件操作 1. lseek lseek 是一個用于在文件中移動文件指針的系統調用&#xff0c;通常用于在文件描述符所指向的文件中定位讀取或寫入的位置。它允許程序在文件中隨機訪問數據&#xff0c;而不是只能順序讀取或寫入。 off_t …

LINUX安裝運行jeelowcode前端項目

參考 JeeLowCode低代碼社區,JeeLowCode低代碼開發平臺,JeeLowCode低代碼開發框架,快速啟動&#xff08;VUE&#xff09; 安裝node 18 LINUX安裝node/nodejs_linux安裝node 安裝到哪-CSDN博客 安裝PNPM LINUX安裝PNPM-CSDN博客 下載 git clone https://gitcode.com/jeelo…

【Redis】基本架構

1. 單線程模型 現在開啟了三個redis-cli客戶端同時執行命令。 客戶端1設置一個字符串鍵值對&#xff1a; 127.0.0.1:6379> set hello world客戶端2對counter做自增操作&#xff1a; 127.0.0.1:6379> incr counter客戶端3對counter做自增操作&#xff1a; 127.0.0.1:…

[yolov11改進系列]基于yolov11的修改檢測頭為自適應特征融合模塊為ASFFHead檢測頭的python源碼+訓練源碼

【自適應空間特征融合模塊ASFF介紹】 ASFF&#xff08;Adaptive Spatial Feature Fusion&#xff09;是一種自適應特征融合策略&#xff0c;旨在解決目標檢測中不同尺度特征之間的沖突和不一致性。 ? 基本概念和原理 ASFF通過學習每個尺度特征的自適應融合權重&#xff0c…