如何制作gpg
能够模拟以下键盘输入(并且足够智能以等待输入被询问)的批处理(或 C/C++)脚本(运行数百次命令)?
8
↵</kbd>
S
↵</kbd>E
↵</kbd>Q
↵</kbd>
4096
↵</kbd>
0
↵</kbd>y
↵</kbd>
Jean Dupont
↵</kbd>
↵</kbd>
born 1970-01-01 in Paris, France
↵</kbd>
O
↵</kbd>
correct horse battery staple
↵</kbd>
correct horse battery staple
↵</kbd>
我想为自己生成一个 PGP 密钥对(用于私人通信),但我希望密钥的短 ID 易于记忆,FFFFFFFE
例如。
PGP 密钥的短 id 是其指纹的最后 8 个字符。供您参考,PGP 密钥的指纹是校验和(历史上为 SHA-1)。
我对生成的 PGP 密钥的期望如下:
- 它的短 id(见上文)必须易于记忆。
- 我希望我的钥匙是“不寻常的”,所以我必须使用
--expert
模式。- 默认情况下,生成的密钥既可以加密(E)也可以签署其他人的密钥(C,“cert”),但我希望我的密钥只签署其他人的密钥。
好的。所以,我想我获得“自定义”密钥 id 的解决方案是生成大量密钥(请注意,如果你这样做,我相信全局熵会非常减少),然后选择我最喜欢的一个(比如当你的电话提供商允许您在列表中选择您未来的电话号码)。
我试过的
通过阅读doc 中的该页面,我想我可以使用gpg --batch --expert --gen-key gpg-keygen-settings.txt
以下设置文件:
Key-Type: RSA
Key-Length: 4096
Key-Usage: cert
Name-Real: Jean Dupont
Name-Comment: born 1970-01-01 in Paris, France
Expire-Date: 0
Passphrase: correct horse battery staple
%commit
%echo Done.
但它不会让我创建一个仅用于签署其他人的密钥 ( cert
) 的密钥。实际上,文档说 (for Key-Usage
) “<em>允许的值是 'encrypt'、'sign' 和 'auth'</em>”。cert
是默认值,但使用空白Key-Usage
字段也不起作用。
我认为我必须做的事
我认为使用我想要的设置生成所有这些密钥的唯一方法是,没有解决方案,只能模拟密钥生成,就好像真人在交互式运行 GPG 外壳一样。
以下是必须做的摘录:
C:\> gpg --gen-key --expert
Please select what kind of key you want:
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (sign only)
(4) RSA (sign only)
(7) DSA (set your own capabilities)
(8) RSA (set your own capabilities)
Your selection? 8
Possible actions for a RSA key: Sign Certify Encrypt Authenticate
Current allowed actions: Sign Certify Encrypt
(S) Toggle the sign capability
(E) Toggle the encrypt capability
(A) Toggle the authenticate capability
(Q) Finished
Your selection?
[…]
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Requested keysize is 4096 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n>w = key expires in n weeks
<n>m = key expires in n months
<n>y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct? (y/N) y
You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Real name: […]
[…]
所以,呃。非常感谢。奇怪的要求,我知道。轻笑