跳到主要内容
LeedyBox
支持我们

密码与 UUID 生成器

在浏览器中使用 Web Crypto API 生成随机密码和 UUID(v4 和 v7),并查看 UUID 的版本和时间戳。

密码生成器

字符
估计熵: – –

熵 = 长度 × log2(可能的字符数)。此估计值仅适用于随机生成的密码,例如下方的密码。

生成的密码

    UUID 生成器

    UUID 检查器

    说明

    • 密码和 UUID 在您的浏览器中使用 Web Crypto 随机数生成器生成,不会发送到 LeedyBox,也不会被 LeedyBox 存储,因此 LeedyBox 无法找回它们。需要保留的密码请保存在密码管理器中。
    • 每个账户使用不同的密码,并在可用时开启双重身份验证。
    • 强度标签只是估计值,没有考虑服务如何存储密码,也没有考虑该密码是否出现在数据泄露中。
    • UUID v7 包含其创建时间,因此任何看到它的人都能读出它的生成时间。在这一点很重要的场合请使用 v4。
    • UUID 是标识符。不要将其用作密码或秘密令牌。

    使用方法

    1. 用数字框或滑块设置长度(4 到 128,默认为 16),并在“密码数量(1–50)”框中输入需要的密码个数(默认为 5)。每次更改选项都会生成新的列表;如果某个值超出范围,或者当前的字符设置无法使用,则会显示一条消息,说明需要修改哪里。
    2. 在“字符”中选择要使用的字符集,需要时可编辑“符号集”。如果密码需要念给别人听,或要照着纸上的内容输入,请开启“排除易混淆字符(I l 1 O 0 o)”。
    3. 查看估计熵和强度标签,然后点击密码旁边的“复制”,或点击“全部复制”,以每行一个密码的形式复制整个列表。“重新生成”会用相同的设置生成新的列表。
    4. 如需生成 ID,请前往“UUID 生成器”,在“版本”中选择 v4 或 v7,输入 UUID 数量(1 到 100,默认为 5);如果您的系统要求相应格式,可开启“大写”“不含连字符”或同时开启两者,然后点击“生成 UUID”。更改版本或切换任一复选框都会生成一组新的、不同的 UUID,而不是重新格式化当前的 UUID。“生成 UUID”旁边的“全部复制”按钮会以每行一个 UUID 的形式复制列表。
    5. 要检查现有的 UUID,请将其粘贴到“UUID 检查器”下的“粘贴 UUID”框中,结果会随着输入更新。带或不带连字符、大写或小写、用花括号括起或带 urn:uuid: 前缀的 UUID 都可以接受。结果会说明它是否有效,并显示规范化形式(带连字符的小写形式)、变体和版本;如果 UUID 中存有时间戳,还会显示该时间戳。对于 nil UUID 和 max UUID,会显示其类型,而不是变体和版本。

    常见问题

    密码的随机性如何?复制密码安全吗?

    每个字符都通过 crypto.getRandomValues(浏览器内置的密码学安全随机数生成器)选取,并使用拒绝采样来避免简单取余运算带来的偏差;之后还会打乱字符顺序。列表只存在于当前打开的页面中,重新加载页面、点击“重新生成”或更改选项时就会被替换。复制的密码会一直留在剪贴板中,直到被其他内容替换;剪贴板历史或同步功能还可能保留一份副本,或将其传到您的其他设备上,因此将密码粘贴到密码管理器后,请复制一些其他内容,并从剪贴板历史中删除该条目。

    “弱”“一般”“强”和“很强”分别是什么意思?密码应该多长?

    它们是按估计熵划分的区间:低于 40 位为“弱”,40 位至不足 60 位为“一般”,60 位至不足 80 位为“强”,80 位及以上为“很强”。每个字符增加 log2(可能的字符数) 位熵,使用默认的 85 个字符(全部四个字符集,使用默认符号)时约为 6.4 位,因此默认长度 16 约为 102.6 位,属于“很强”。对于保存在密码管理器中的随机密码,如果网站允许,把长度设在“很强”区间是一个合理的目标。如果网站只允许字母和数字,请用长度弥补缺少的符号:从这 62 个字符中选取 20 个字符,约为 119 位。

    为什么实际强度可能低于估计值?

    开启“每个所选字符集至少包含一个字符”后,缺少某个字符集的密码不会被生成;而且当密码的字符数多于所选字符集的数量时,其余字符的出现概率并不完全相同。因此,真实的熵低于按“长度 × log2(可能的字符数)”算出的值。这一差别对短密码比较明显,对长密码则很小:从四个默认字符集中选取 4 个字符时,显示约 25.6 位,而准确值约为 21.8 位;在默认的 16 个字符下,差距不到半位。关闭该选项后,每个字符都独立地从所有可能的字符中抽取,估计值与密码的实际生成方式相符。

    网站不接受其中某些符号,该怎么办?

    从“符号集”框中删除网站不接受的符号,或者只输入网站允许的符号;列表会随输入重新生成。空格会被忽略,重复输入的字符只计一次。如果网站要求必须包含符号,请保持开启“每个所选字符集至少包含一个字符”。如果网站不接受任何符号,请取消勾选“符号”,并增加长度来弥补字符集变小的影响。

    应该使用 UUID v4 还是 v7?

    如果顺序无关紧要,或者不希望从 ID 中读出创建时间,请使用 v4。v7 UUID 以 48 位的毫秒级 Unix 时间戳开头,除版本位和变体位外,其余 74 位是随机的,不过有些生成器会用其中一部分作为计数器或更精细的时间。因此,v7 UUID 大致按创建时间排序,用作数据库键时,新条目在索引中往往会集中在一起。在本页面上,每一毫秒内生成的第一个 v7 UUID 有 73 个随机位,这 74 位中的最高位保留为 0。在同一毫秒内生成更多 v7 UUID,或者设备时钟回拨时,会在前一个值的基础上增加一个随机值,而不是重新抽取,因此生成的 UUID 仍然按顺序排列。

    生成的两个 UUID 会相同吗?

    理论上可能,但只要浏览器的随机数生成器按预期工作,实际上概率小到可以忽略。v4 UUID 有 122 个随机位,大约要生成 2.7 × 10^18 个,其中任意两个相同的概率才会达到 50%。本页面生成的每个 v7 UUID 都比前一个大,因此只要页面保持打开,就不会重复;在其他地方生成的 v7 UUID 只有在毫秒数和随机位都相同时,才可能与其中某一个相同。

    为什么检查器对有些 UUID 显示时间戳,对另一些则不显示?

    检查器只从 RFC 9562 变体的版本 1、6 和 7 中读取时间,这些版本会在规定的位置存储时间:版本 1 和 6 记录自 1582 年 10 月 15 日起经过的 100 纳秒间隔数,版本 7 记录自 1970-01-01 UTC 起经过的毫秒数。时间以 UTC 显示,精确到毫秒。它来自生成该 UUID 的设备时钟,而且有些生成器会对其进行偏移或取整,因此请将其视为大致的创建时间。版本 2 用其他数据替换了部分时间戳,版本 8 的布局由生成者自行定义,版本 3、4 和 5 不包含时间。