密码生成器

举报
yd_280683556 发表于 2026/08/26 23:13:11 2026/08/26
【摘要】 作品简介:密码生成器,基于Web Crypto生成随机强密码,字符集可定制、强度实时评估、历史本地保存。密码生成器项目简介密码生成器是一款基于 Web Crypto 的纯前端密码工具。打开页面即可获得一串安全随机密码:字符集、长度自由定制,生成时保证勾选的每种字符类型至少出现一次;熵值引擎实时评估密码强度并给出四档评级;最近 30 条生成记录保存在浏览器本地,支持一键复制与删除。整个应用由单...
密码生成器 preview

密码生成器

项目简介

密码生成器是一款基于 Web Crypto 的纯前端密码工具。打开页面即可获得一串安全随机密码:字符集、长度自由定制,生成时保证勾选的每种字符类型至少出现一次;熵值引擎实时评估密码强度并给出四档评级;最近 30 条生成记录保存在浏览器本地,支持一键复制与删除。

整个应用由单个 HTML 文件承载,零依赖、零后端,打开即用。

核心功能

  • Web Crypto 安全随机:基于 crypto.getRandomValues 生成真随机字节,替代脆弱的 Math.random()。
  • 字符集自由组合:大写字母、小写字母、数字、符号四种字符集可任意勾选,并保证每种勾选类型至少出现一位。
  • 长度可调:6–64 位滑杆调节,实时显示当前长度。
  • 排除易混淆字符:一键剔除 0O1lI、反引号、竖线等视觉上难以区分的字符。
  • 强度实时评估:以信息熵为核心指标,划分弱 / 中 / 良好 / 很强四档,并以彩色强度条可视化。
  • 生成历史:最近 30 条记录 localStorage 本地保存,每条可单独复制或删除,支持一键清空。

技术架构

应用采用「参数设置层 → 随机生成核心层 → 展示与持久化层」的简洁三层结构,全部运行在浏览器端,无后端依赖。

系统架构图
  • 参数设置层:长度滑杆、字符集勾选、排除易混淆开关等控件统一收集配置,任何变化即时触发重新评估当前密码。
  • 随机生成核心层:随机生成模块先从各勾选字符集各取一位保证覆盖,再组合填充至目标长度,最后用 Fisher–Yates 洗牌打乱顺序;强度评估模块按字符池大小与长度计算信息熵。
  • 展示与持久化层:密码展示框、强度条、生成历史列表统一重绘;历史记录经 localStorage 保存,刷新不丢失。

核心逻辑说明

随机源:每个随机索引都来自 crypto.getRandomValues(new Uint32Array(1))[0] % setSize,由浏览器密码学安全随机数发生器提供,避免可预测性。

保证覆盖:生成时先从每种已勾选字符集中各取一个随机字符放入待选数组,再从合并后的字符池填充剩余位置,最后洗牌打乱——既保证复杂度,又消除「某类字符缺失」的结构化弱点。

洗牌算法:对目标数组执行 Fisher–Yates 原地洗牌,从末位向前逐位与随机下标交换,每个排列等概率出现,配合安全随机源保证不可预测。

熵值评估:以 长度 × log2(字符池大小) 估算理论熵,并依据实际使用字符集的丰富度做轻微折扣,映射到弱(<45 bit)、中(<70 bit)、良好(<100 bit)、很强(≥100 bit)四档评级。

技术栈

技术 用途
HTML5 页面结构
CSS3 卡片式布局、强度条动效、响应式设计
原生 JavaScript Web Crypto API、Fisher–Yates 洗牌、熵值评估
localStorage 生成历史持久化
Clipboard API 密码一键复制

使用方式

直接用浏览器打开 index.html 即可使用;也可通过任意静态文件服务器托管后访问。

项目地址:开发者作品展览馆

亮点与价值

  • 零依赖、开箱即用:单个 HTML 文件承载全部能力,部署只需一个静态服务器。
  • 密码学安全:真随机源 + 覆盖保证 + 均匀洗牌,生成过程本身没有可预测弱点。
  • 隐私友好:密码全程在浏览器本地生成与保存,不经过任何网络传输。
  • 实用细节:易混淆字符排除、强度评级、历史复制删除,覆盖日常设密常见需求。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。