码迷,mamicode.com
首页 > 其他好文 > 详细

gpg加密使用

时间:2020-03-31 23:18:00      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:验证   nec   http   try   secret   命令行   generate   import   org   

GPG一般是两方用来加密发送信息的。

使用对方的公钥进行加密,可以确保只有对方才能用他的私钥解密。
使用自己的私钥对消息签名,可以确保对方用自己的公钥验证消息的确源自自己。

生成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}

这里关键有两点:

  1. 必须增加--batch选项,否则--passphrase选项无效,这是在man手册里有说的
  2. 必须增加--pinentry-mode loopback选项,否则仍然提示密码框,这个手册中没说,搜索了很久才知道如何解决(这个回答

gpg加密使用

标签:验证   nec   http   try   secret   命令行   generate   import   org   

原文地址:https://www.cnblogs.com/mosakashaka/p/12608977.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!