我想自动生成至少两个 GPG 密钥,以便在虚拟机中进行测试和演示。由于这种背景,我想确保密钥生成速度快,最好/dev/*random
根本不使用或修改。例如,使用系统时钟作为唯一的随机源就可以了:
$ gpg --quick-gen-key 'alice' [options] --random-data $(date +%s)
$ sleep 2
$ gpg --quick-gen-key 'bob' [options] --random-data $(date +%s)
我还没有找到任何像这样的选项。有-quick-random
和--debug-quick-random
页面中没有的内容man
,似乎受gpg
, 和支持只是不工作。例如,这些命令在我杀死它们之前运行了几分钟:
$ gpg --batch --debug-quick-random --passphrase 'alice' --quick-gen-key '[email protected]'
$ gpg --batch -quick-random --passphrase 'alice' --quick-gen-key '[email protected]'
使用gpg
(GnuPG) 2.1.2。
答案1
您可以暂时使用/dev/random
以下命令:/dev/urandom
rng-tools
# rngd -v -f -r /dev/urandom
更多信息请点击这里:https://madebits.github.io/#blog/2014/2014-05-30-Making-dev-random-Temporary-Faster.md
答案2
我在写我的文章时有完全相同的要求智能卡设置程序。在测试过程中,我不会关心熵,并且每次测试时我需要连续生成多个 GPG 密钥。
正如我在回答中所描述的这里以下脚本帮助我加快了速度:
#!/usr/bin/env python
# For testing purposes only
# DO NOT USE THIS, THIS DOES NOT PROVIDE ENTROPY TO /dev/random, JUST BYTES
import fcntl
import time
import struct
RNDADDENTROPY=0x40085203
while True:
random = "3420348024823049823-984230942049832423l4j2l42j"
t = struct.pack("ii32s", 8, 32, random)
with open("/dev/random", mode='wb') as fp:
# as fp has a method fileno(), you can pass it to ioctl
res = fcntl.ioctl(fp, RNDADDENTROPY, t)
time.sleep(0.001)