使用 GPU(WebGL)快速生成带有“靓号”的 PGP 密钥!

“靓号”指的是带有连号等特定格式的密钥指纹或 ID(例如以 77777777 结尾),具体介绍和生成原理请参见:

密钥使用 OpenPGP.js 在浏览器中生成,不会发送到其他地方。如果仍然担心这一点,可以检查源代码、查看浏览器开发者工具的“网络”部分、或在页面加载完成后断网使用。


可以按 Enter 添加更多的用户 ID。

根据 GPU 性能和占用率调节这两个值。

你会得到一个生效时间距离现在 {{ (backTime > 2592000) ? `${Math.ceil(backTime / 2592000)} 个月` : `${Math.ceil(backTime / 86400)} 天` }}之内(最早为 {{ (new Date(Date.now() - backTime * 1000)).toISOString() }})的密钥。

将格式应用到子密钥而不是主密钥上

40 个十六进制数字,不区分大小写。空格会被忽略,X 表示只要这些位相同即可,其他 [\dA-FX] 以外的字符表示对该位数字没有要求。

最后 个数字为 快速设置

预计需要计算 {{ estimatedHashCount }} 次 hash,实际的计算次数可能是这个值的几分之一或几倍,也许需要一点运气……

直接使用 GLSL 代码!

你可以自行编写更复杂的判断密钥指纹是否符合格式的 GLSL 代码,这些代码将以 `#define FILTER(h) (code)` 的形式出现在算号使用的着色器中。

换行会被替换成空格,留空则会使用“密钥指纹格式”的设定,输入错误的代码将无法得到任何密钥。

在着色器中,计算的密钥指纹(实际上是 80 bytes 的 SHA-1 hash)以大端序保存为 `uint[5]`,并使用上面的 `FILTER` 来检查是否符合格式。

把不同密钥的“靓号”合并到一起!
私钥 A
私钥 B

如果你希望生成主密钥和子密钥都是“靓号”的密钥,可以先分别生成两个不同的密钥,然后在这里合并。

私钥 B 的主密钥和子密钥将作为子密钥被附加到私钥 A 上。

然后,请自行使用 gpg --edit-key 编辑私钥,例如删除不需要的子密钥 delkey、修改密钥用途 change-usage 和有效期 expire 等,再输入 save 保存更改。

算号成功后播放提示音
算号成功后使用 ntfy 发送通知
不间断算号
将生成的私钥自动保存到本地 选择目录 {{ saveToDirectoryHandle ? saveToDirectoryHandle.name : '未设定' }}

已计算 hash:{{ hashCount }} {{ `(${Number(BigInt(hashCount) * 100n / estimatedHashCount) / 100}x estimated)` }}
耗时:{{ Math.round(runningTime / 1000 * 100) / 100 }}s
速度:{{ Math.round(hashCount / runningTime * 1000 * 100) / 100 || 0 }} hash/s

生成的密钥(已生成 {{ generatedKeyHistory.length }} 个)

[批量保存私钥] [清除生成记录]

私钥
公钥

生效时间:{{ generatedKey?.publicKey.getCreationTime().toISOString() || '****-**-**T**:**:**.***Z' }}

指纹(主密钥和子密钥):

保存私钥 保存公钥