标签:验证 nec http try secret 命令行 generate import org
GPG一般是两方用来加密发送信息的。
使用对方的公钥进行加密,可以确保只有对方才能用他的私钥解密。
使用自己的私钥对消息签名,可以确保对方用自己的公钥验证消息的确源自自己。
gpg --generate-key
之后会询问用户名、邮箱以及密码,最后会需要大量的随机数(这里我等了十分钟以上才好)
一般私钥导出是为了在其他机器上解密文件
# 获取私钥id
gpg --list-secret-keys
# 导出私钥到文件
gpg --export-secret-keys $ID > my-private-key.asc
# 在另一台机器上导入
gpg --import my-private-key.asc
# 如果另一台机器上已经存在,则可以先删除
gpg --delete-keys
gpg --delete-secret-keys
# 查看有哪些公钥可导出
gpg --list-keys
# 导出指定公钥
gpg --output blake.gpg --armor --export alice@cyb.org
# 导入
gpg --import blake.gpg
# 确认key有效
gpg --edit-key alice@cyb.org
>fpr
># 注意这里trust要选择5,后面签名才能不用再确认
>trust
>check
gpg --encrypt --armor --recipient recipient_email $file
gpg --decrypt --output {outputfile} message-for-me.gpg
通常情况下,使用gpg 解密后,gpg agent会缓存输入的密码一段时间。
如果需要强制不进行缓存,每次都提示输入密码
创建~/.gnupg/gpg-agent.conf
文件,并增加以下内容:
default-cache-ttl 1
max-cache-ttl 1
然后重启gpg agent:
echo RELOADAGENT | gpg-connect-agent
如果想在脚本中进行解密,一般是不希望弹出密码框,而是直接通过命令提供。
命令如下:
gpg --pinentry-mode loopback --batch --yes --passphrase "${passphrase}" --output ${output_file_name} --decrypt ${file_to_decrypt}
这里关键有两点:
--batch
选项,否则--passphrase
选项无效,这是在man手册里有说的--pinentry-mode loopback
选项,否则仍然提示密码框,这个手册中没说,搜索了很久才知道如何解决(这个回答)标签:验证 nec http try secret 命令行 generate import org
原文地址:https://www.cnblogs.com/mosakashaka/p/12608977.html