开发者常用的免费在线生成器
在浏览器本地生成哈希、密码、UUID、占位文本与认证条目。
选择一个工具
生成出来的密钥,安全性取决于你接下来把它放进了哪里。
这里的五个工具替你省下写脚本的工夫:标识符、摘要、密码、密码的存储形态,以及填充文本。它们都取用浏览器的密码学随机源,也都不保留副本。它们唯一做不到的,是替你决定这个值要干什么用——而这一类里几乎所有问题,都源于某个值被用在了它的算法并非为之而选的地方。
标识符:UUID 版本要有意识地选
UUID 生成提供 v1、v4 和 v7,差别不是装饰性的。v4 是 122 位随机数,不透露生成的时间和地点,因此凡是会暴露给用户的场景,它都是稳妥的默认选择。v1 内嵌时间戳和节点标识,而这通常不是你打算公开的信息。
v7 按时间有序,因此新生成的值彼此相邻,在 B 树索引里也会落在相近的位置。对数据库主键来说这是实打实的写入吞吐收益,代价是暴露创建时间。索引局部性要紧就选 v7,值必须什么都不透露就选 v4。
安全密码生成与 htpasswd 条目生成的分工
这两个看着挨得很近,产出的却是不同的东西。安全密码生成产出的是密钥本身,长度和字符集可配,交给人或服务保管。htpasswd 条目生成产出的是密钥的存储形态:用户名加单向哈希,排布成 Apache 基本认证在 .htpasswd 文件里期望的样子。
真要用 htpasswd 时,选 bcrypt 而不是 SHA-1。该文件里的 SHA-1 是无盐单轮摘要,文件一旦泄漏就能被离线轻易破解;bcrypt 则是有盐且刻意慢的。另外基本认证每次请求都会把密码带上,所以要么走 TLS,要么就别用。
哈希是指纹,占位文本是临时品
哈希与校验和计算对文本或文件求摘要。这是一个完整性工具:确认下载文件与公布的校验和一致、判断两个文件是否不同、给缓存做键。它不是加密,因为输出里恢复不出任何原文;它也不是密码存储,密码存储需要 bcrypt、Argon2 这类带盐的慢算法。
Lorem Ipsum 占位文本生成的存在意义,是让版式能在文案写好之前先被评估。上线前务必替换掉。占位文本的平均词长和真实文案不同,它会让一个真实内容一填就垮的版式看起来很美观,而且对屏幕阅读器和搜索引擎毫无意义。
在采信结果之前
- 按需求选 UUID 版本:值必须零泄露就选 v4,需要有序和索引局部性就选 v7,v1 只在兼容旧系统时使用。
- htpasswd 条目用 bcrypt 而不是 SHA-1,基本认证只在 TLS 之上提供。
- 把哈希当作完整性指纹,永远不要当作加密,也永远不要当作密码存储方案。
- 生成的密码要立刻转移到密钥管理系统。留在浏览器标签页、截图、工单或提交记录里才是真正的风险,生成这一步不是。
- 发布前把每一段 Lorem Ipsum 都换成真实文案,换完再复查一遍版式。
常见问题
浏览器里生成的密码真的随机吗?
取值来自平台的密码学随机源,也就是生成密钥材料所用的同一套原语,而不是可预测的伪随机辅助函数。生成这一环是可靠的,薄弱环节在后面,所以密钥管理系统比你挑了哪套字符集更重要。
该用哪种哈希算法?
做完整性校验时,SHA-256 是合理的默认值。MD5 和 SHA-1 如今只在比对历史公布的校验和时还有意义,因为两者都已有可实操的碰撞。存储密码则一个都不合适,请用 bcrypt、scrypt 或 Argon2。
生成的值会重复吗?
v4 UUID 有 122 位随机数,在任何现实体量下碰撞都不是需要担心的问题。密码是另一回事:那里的重复风险由长度太短和字符集太小主导,而不是由生成器决定。
我生成的内容会被保存或记录吗?
不会。每个值都在当前浏览器标签页内产生,不传输、不保存、不写日志。离开页面它就没了,所以密码要在关页面之前先复制到目的地。