通过 GPG 枚举密钥进行指纹碰撞会消耗大量的时间。此生成器的原理,是先生成密钥,然后调整密钥的创建日期,来查找所想要的“靓号”后缀。
此生成器通过 CUDA 利用 GPU 实现密钥的高速运算。经过测试,在如下表的设备配置中,利用 GPU 实现的版本比利用 CPU 的版本快 3~4 倍。
CPU | GPU |
---|---|
Intel i7-5500U | NVIDIA GeForce 940M |
Valodim 的原始版本已过时。GnuPG 2.1及更高版本不再使用 secring 进行密钥存储(参阅 GnuPG)。位于traditional
分支的版本针对此更新进行了修改,并修改了输入逻辑。
位于main
分支的版本需要安装 CUDA 才能编译。如果您不具备运行的条件,请利用通用的traditional
分支版本。
您需要手动修改Makefile
文件中的 nvcc
编译标志。这个标志是这样的:
CUDAFLAGS= -O3 -rdc=true -gencode arch=compute_50,code=sm_50
在如上表的设备配置中,显示卡NVIDIA GeForce 940M
由于计算力过低,不与最新的 CUDA 默认配置兼容,因而加入了这些项。您可以首先去掉-gencode
及其以后的所有内容并尝试运行。如果运行出现错误,请在此处查询您的显示卡计算力,并对应修改-gencode
。
是否能够正常运行的一个简单的判断方法是,按照以下的使用方法编译后,输入./pgpgen AA
。这条命令会在很短的时间内完成。检查命令的输出中后部分GPG的导入部分,观察密钥指纹是否以AA
结尾。
编译:
make
生成带有特定后缀的密钥(例如,“ 0xDEADBEEF”)。注意,此后缀必须为偶数位的。
./pgpgen DEADBEEF
您可以多次运行此命令,每次运行的结果将被添加到private.key
文件中。
由于没有有效的 UID 和签名,所有这些密钥由于 GnuPG 规则都不可被导入。强行导入它们可能会破坏您的钥匙串。
为了保护您现有的钥匙串,请将结果导入到临时的 gpg 目录中(例如此处 的 result
):
mkdir --mode 700 result
gpg --homedir ./result --allow-non-selfsigned-uid --import private.key
查看您生成的密钥:
gpg --homedir ./result --list-keys
要将其修改为通用 PGP 密钥,请编辑密钥(例如 5E1EC210DEADBEEF
):
gpg --homedir ./result --edit-key 5E1EC210DEADBEEF
输入以下命令进行修改:
adduid(交互式:您的用户名与邮箱)
uid 1
deluid(选择预生成 uid 并将其删除)
addkey(创建 RSA 签名密钥)
addkey(创建 RSA 加密密钥)
passwd(更改密码)
save (保存并退出编辑)
使用以下命令将通用 PGP 密钥(例如 5E1EC210DEADBEEF
)导出到文件(例如 good.key
)中:
gpg --homedir ./result --armor --output good.key --export-secret-keys 5E1EC210DEADBEEF
然后将此密钥文件(例如 good.key
)以常规方法导入到您自己的钥匙串中。
gpg --import good.key
若要清理目录以避免不必要的泄漏,请运行
make clean
您还需要自己删除result
文件夹和good.key
文件。