论如何计算一个 GPG 靓号

众所周知,知周所众,有一个 GPG 靓号在你 github 的 commit 记录中是很装逼的(确信

就比如:

所以谁不想要别人看到自己的 commit 时看到一堆888888888888呢?

计算!

这里推荐用 gpu 进行算号,因为就算是很老的 gpu 也能比现代化的 cpu 计算来的更快,作为参考,我的小垃圾 1050Ti 的计算速度也能达到 12亿哈希/秒。

那既然要用 gpu 算号,自然就少不了著名的 gpg-fingerprint-filter-gpu 了。

可惜的是,你必须有一个 linux 环境,不过 wsl2 的显卡直通就提供了一个很好的环境。这样,就可以省去装一个双系统的烦恼了(大概是)。

第一步:准备工作

先准备好一些基本的依赖,这一步很简单,直接无脑 apt install 就行了。

apt update
apt install libgcrypt20-dev

第二步:clone 并编译项目

确保你的虚拟机里已经装好了 git ,接下来进行 clone 。

git clone https://github.com/cuihaoleo/gpg-fingerprint-filter-gpu

控制台输出:

root@ZeroWolf-PC:~# git clone https://github.com/cuihaoleo/gpg-fingerprint-filter-gpu
Cloning into 'gpg-fingerprint-filter-gpu'...
remote: Enumerating objects: 94, done.
remote: Counting objects: 100% (20/20), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 94 (delta 17), reused 12 (delta 12), pack-reused 74 (from 1)
Receiving objects: 100% (94/94), 29.78 KiB | 824.00 KiB/s, done.
Resolving deltas: 100% (54/54), done.

clone 完成后,进入文件夹。

cd gpg-fingerprint-filter-gpu

控制台输出:

root@ZeroWolf-PC:~# cd gpg-fingerprint-filter-gpu
root@ZeroWolf-PC:~/gpg-fingerprint-filter-gpu# 

确保路径在文件夹内,现在来进行编译。

make

当然,它可能会出现错误,比如:

root@ZeroWolf-PC:~/gpg-fingerprint-filter-gpu# make
nvcc -c -o key_test.o -O3 -std=c++14 --compiler-options -Wall,-Wextra `pkg-config --cflags libgcrypt` key_test.cpp
/bin/sh: 1: nvcc: not found
make: *** [Makefile:17: key_test.o] Error 127

此时,你需要装一个cuda喵~

直接CV下面的指令。

sudo dpkg -i cuda-repo-*.deb
sudo apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/$(lsb_release -c | awk '{print $2}')/x86_64/7fa2af80.pub
sudo apt-get update
sudo apt-get install cuda
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
source ~/.bashrc

检查nvcc是否正常。

nvcc --version

正常后,我们接着来make。

root@ZeroWolf-PC:~/gpg-fingerprint-filter-gpu# make
nvcc -c -o key_test.o -O3 -std=c++14 --compiler-options -Wall,-Wextra `pkg-config --cflags libgcrypt` key_test.cpp
nvcc -c -o key_test_sha1.o -O3 -std=c++14 --compiler-options -Wall,-Wextra `pkg-config --cflags libgcrypt` key_test_sha1.cu
nvcc -c -o key_test_pattern.o -O3 -std=c++14 --compiler-options -Wall,-Wextra `pkg-config --cflags libgcrypt` key_test_pattern.cpp
key_test_pattern.cpp: In member function ‘void CudaManager::load_patterns(const std::string&)’:
key_test_pattern.cpp:175:55: warning: ‘%s’ directive argument is null [-Wformat-overflow=]
  175 |         fprintf(stderr, "nvrtcCompileProgram failed:\n%s\n", log.data());
      |                                                       ^~
nvcc -c -o gpg_helper.o -O3 -std=c++14 --compiler-options -Wall,-Wextra `pkg-config --cflags libgcrypt` gpg_helper.cpp
nvcc -o gpg-fingerprint-filter-gpu -O3 -std=c++14 --compiler-options -Wall,-Wextra `pkg-config --libs libgcrypt` -lgcrypt -lnvrtc -lcuda `pkg-config --cflags libgcrypt` main.cpp key_test.o key_test_sha1.o key_test_pattern.o gpg_helper.o
root@ZeroWolf-PC:~/gpg-fingerprint-filter-gpu#

好欸,这样看上去就成功了呢qwq。

接下来你可以把 gpg-fingerprint-filter-gpu 这个文件移动到你常用的地方或者根目录方便调用,而源码的文件夹就可以速删哩。

第三步:正式的开始计算!

这里以 ed25519 类型, x{12} 格式进行示范。

./gpg-fingerprint-filter-gpu -a ed25519 -t 31104400 'x{12}' output

x{12} 你可以更改成任何正则表达式,程序在随机计算出一个 gpg key 之后会进行判断,如果于该正则表达式相同,就会保存结果,否则就会丢弃该 key 。

x{12} 格式的 gpg key 算出来大概就是刚开始时展示的 ????XXXXXXXXXXXX 的格式,最后会有12个相同的数字。

计算时的输出:

root@ZeroWolf-PC:~# ./gpg-fingerprint-filter-gpu -a ed25519 -t 31104400 'x{12}' output
Speed: 1219683938.0092 hashes / sec

当算出结果时,会保存到 output 文件夹中。

此时,我们就可以把文件复制到 windows 宿主机中,导入密钥了。

由于算出的密钥都是空的 UID,导入的时候要带上允许空 UID 的导入参数。

gpg --allow-non-selfsigned-uid --import <输出的文件名>.pgp

Powershell 输出:

PS C:\Users\ZeroWolf\Desktop> gpg --allow-non-selfsigned-uid --import DDADBBBBBBBBBBBB.gpg
gpg: key DDADBBBBBBBBBBBB: accepted non self-signed user ID "NONAME"
gpg: key DDADBBBBBBBBBBBB: public key "NONAME" imported
gpg: key DDADBBBBBBBBBBBB: secret key imported
gpg: Total number processed: 1
gpg:               imported: 1
gpg:       secret keys read: 1
gpg:   secret keys imported: 1
PS C:\Users\ZeroWolf\Desktop>

接下来再简简单单地去 Kelopatra 给 gpg key 设置下信任再改下名字就好哩。

选择:是的,这是我的

再添加一个用户 id :

至此,你已经学会了如何计算一个 gpg key 了。

如何在 git commit 时使用 gpg 进行签名

执行指令:

git config --global commit.gpgsign true
git config --global user.signingkey <这里填写你算出来的 gpg key>

接下来,在你 git commit 时就会自动进行 gpg 签名啦~

不过,你还需要在 github 对这个 gpg key 设置为信任,这样,在 github commit 记录中才会显示你的 gpg key。

在 github 添加新的 gpg key

在 Kelopatra 双击你的 gpg key ,选择导出,复制下面的内容。

粘贴至 github ,并且取个名字。

点击 Add GPG key,进行保存。

至此,所有内容都已经完成了,你可以丝滑地 commit ,并且向朋友们炫耀一下你的 gpg key 了。

比如这样:

参考文献:

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇