使用命令行创建 GPG 密钥

使用以下 shell 命令:

gpg2 --full-gen-key

此命令生成由公钥和私钥组成的密钥对。其他人使用您的公钥来验证和/或解密您的通信。分发您的公共密钥尽可能广泛地,尤其是你知道将要收到你正宗的通信,如邮件列表谁的人。例如,Fedora 文档项目要求参与者在他们的自我介绍中包含一个 GPG 公钥。

一系列提示将指导您完成整个过程。如果需要,按Enter键分配默认值。第一个提示要求您选择您喜欢的键类型:

请选择您想要的密钥类型:(1) RSA 和 RSA(默认)(2) DSA 和 Elgamal(3) DSA(仅签名)(4) RSA(仅签名)
你的选择?

在几乎所有情况下,默认值都是正确的选择。RSA/RSA 密钥不仅可以让您签署通信,还可以加密文件。

接下来,选择密钥大小:

RSA 密钥的长度可能在 1024 到 4096 位之间。此处几乎总是推荐更大的,但您的用例和安全模型可能另有规定。
你想要什么键大小?(2048)

同样,默认值对于几乎所有用户来说都足够了,并且代表了极强的安全级别。

接下来,选择密钥何时到期。最好选择一个到期日期而不是使用默认值,即无。 例如,如果密钥上的电子邮件地址无效,到期日期将提醒其他人停止使用该公钥。

请指定密钥的有效期。0 = 密钥不会过期<n> = 密钥在 n 天后过期<n>w = 密钥在 n 周后到期<n>m = 密钥在 n 个月后到期<n>y = 密钥在 n 年后到期
密钥对什么有效?(0)

1y例如,输入值使密钥有效期为一年。(如果您改变主意,您可以在生成密钥后更改此到期日期。)

gpg程序要求签名信息之前,会出现以下提示:

这是否正确(是/否)?

输入y以完成该过程。

接下来,输入您的姓名和电子邮件地址。 请记住,此过程是关于验证您是一个真正的个体。 因此,请包括您的真实姓名。不要使用别名或句柄,因为它们会伪装或混淆您的身份。

输入您的 GPG 密钥的真实电子邮件地址。如果您选择了一个虚假的电子邮件地址,其他人将更难找到您的公钥。这使得验证您的通信变得困难。例如,如果您使用此 GPG 密钥 在邮件列表中进行自我介绍,请输入您在该列表中使用的电子邮件地址。

使用注释字段包含别名或其他信息。(有些人出于不同目的使用不同的键,并用注释标识每个键,例如“Office”或“开源项目”。)

在确认提示时,如果所有条目都正确,则输入字母O以继续,或者使用其他选项来解决任何问题。

最后,为您的密钥输入密码。该gpg程序要求您输入密码两次以确保您没有打字错误。

最后,gpg生成随机数据以使您的密钥尽可能唯一。在此步骤中移动鼠标、键入随机键或在系统上执行其他任务以加快进程。完成此步骤后,您的密钥就已完成并可以使用:

We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: /home/liran/.gnupg/trustdb.gpg: trustdb created
gpg: key AA605BD95861C17D marked as ultimately trusted
gpg: directory '/home/liran/.gnupg/openpgp-revocs.d' created
gpg: revocation certificate stored as '/home/liran/.gnupg/openpgp-revocs.d/C3DE08A566518301A589E395AA605BD95861C17D.rev'
public and secret key created and signed.pub   rsa3072 2021-08-31 [SC] [expires: 2021-09-02]C3DE08A566518301A589E395AA605BD95861C17D
uid                      liran (i am liran) <rli187617@gmail.com>
sub   rsa3072 2021-08-31 [E] [expires: 2021-09-02]

导出公钥

现在您的密钥对已经生成,您需要导出公钥以分发给其他人。在终端中运行命令:

gpg --export --armor rli187617@gmail.com > liran-pubkey.asc

“确保更改”myname@domain.com’生成PGP密钥时提供的电子邮件地址。现在您将在当前目录中看到一个名为我的钥匙.asc. 将此文件发送给您希望能够向您发送加密邮件的任何人。

打印公钥,并上传到 服务器

[liran@fedora ~]$ gpg --armor --export rli187617@gmail.com
-----BEGIN PGP PUBLIC KEY BLOCK-----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
=x+Rh
-----END PGP PUBLIC KEY BLOCK-----

导入公钥

与您现在可以与其他人共享您的公钥一样,其他人也将与您共享他们的公钥。当您收到某人的公共PGP密钥时,将文件保存到一个目录,并从同一目录访问终端,运行:

gpg --import key.asc

这将把此人的公共PGP密钥导入gnupg,允许您开始向他们发送加密消息。您可以随时查看gnupg中当前可用的所有PGP密钥的列表:

gpg --list-keys

您将看到一组类似于下面的条目,gnupg中每个键对应一个条目:

gpg: checking the trustdb
gpg: marginals needed: 3  completes needed: 1  trust model: pgp
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2021-09-02
/home/liran/.gnupg/pubring.kbx
------------------------------
pub   rsa3072 2021-08-31 [SC] [expires: 2021-09-02]C3DE08A566518301A589E395AA605BD95861C17D
uid           [ultimate] liran (i am liran) <rli187617@gmail.com>
sub   rsa3072 2021-08-31 [E] [expires: 2021-09-02]

您需要注意的唯一信息是条目的名称和电子邮件地址,其中说明了该密钥的所有者。加密邮件时,您只需要收件人的电子邮件地址。

通过pgp加密消息

例如,您可能需要将一些敏感信息发送给您的web设计师,他是您已在电子邮件地址下导入的PGP密钥designer@domain.com。键入所需的消息并将其保存到文本文件中,例如。消息.txt. 在终端和目录内消息.txt请运行以下命令:

gpg -e -a -r 'designer@domain.com' message.txt

让我们快速分解上述命令:

  • -e指定我们正在加密数据
  • -a表示我们希望输出为ASCII或纯文本格式
  • -r代表收件人,所以后面跟着设计师的电子邮件地址
  • 最后是我们想要加密的消息文件

很可能这会要求您确认您确实希望加密到这个公钥,您只需点击Y键就可以了。一个新的消息.txt.asc文件将被创建,如果您在文本编辑器中打开该文件,您将看到类似的内容:

 -----BEGIN PGP MESSAGE-----
hQGMAzCBDnMltq9zAQv/ZHQ3tJq+feazdLa3thzQE2bhPx+7WaPZcX7SdkoyuKvw9faS7h9OwBjQ4vUyDKespSq3ZNf1pRgNoXijjs3MGEi5IsYxDgNWo1ZJv2qQqp36.....-----END PGP MESSAGE-----

这是新生成的加密形式的消息。您可以将此文件附加到电子邮件中,也可以将此文件的内容复制并粘贴到电子邮件的正文内容中。

然后,接收者将能够使用他们的私钥对消息进行解密,从而确保在传输过程中看到此消息的任何人都无法查看纯文本版本。

加密二进制文件

上面的部分解释了如何加密文本消息,但是二进制文件呢?它的工作原理基本相同,例如加密一个名为图片.zip,在终端中运行命令:

gpg -e -r 'designer@domain.com' images.zip

唯一的区别是-a选项与输出文件的名称一起被删除。然后像以前一样,如果提示确认公钥的使用,只需按Y键即可。

一个名为图片.zip.gpg将被创建,这是我们的zip文件的加密版本,我们可以通过电子邮件作为附件发送给我们的设计师。然后他们可以使用私钥解密ZIP文件。

解密消息

您还需要一种方法来解密发送给您的消息。请记住,为了让某人向您发送加密邮件,您必须首先与他们共享您的公共PGP密钥。您将得到一个加密的文本块,它看起来与加密消息相同,例如:

 -----BEGIN PGP MESSAGE-----
hQGMAzCBDnMltq9zAQv/ZHQ3tJq+feazdLa3thzQE2bhPx+7WaPZcX7SdkoyuKvw9faS7h9OwBjQ4vUyDKespSq3ZNf1pRgNoXijjs3MGEi5IsYxDgNWo1ZJv2qQqp36.....-----END PGP MESSAGE-----

将此文本块保存到文件中,例如消息.asc,并在终端中运行命令:

gpg -d message.asc > message.txt

系统将提示您输入密码,该密码与最初生成PGP密钥对时提供的密码相同。成功输入密码后消息.txt将创建一个文件,其中包含明文形式的消息的解密版本。就这些!

gpg加密git

配置 git 签名时使用的 key,,如果不知道KEYID可以通过gpg --list-key查看。

git config --global user.signingkey YOUR_KEYID

设置 git 自动签名

git config --global commit.gpgSign true
git config --global tag.forceSignAnnotated true

恭喜,你的通讯现在安全了!

通过本指南,您了解了通过PGP加密正确保护通信安全所需的一切。您已经学习了如何生成PGP密钥对、导出要共享给其他人的公钥、导入其他人的公钥,以及如何加密和解密消息。

下次您需要通过电子邮件发送敏感信息时,您现在可以放心,只有预期的收件人才能看到邮件的内容,使邮件远离不受欢迎的客人。加密快乐!

使用GPG加密通讯,设置git提交验证密钥相关推荐

  1. Android Studio 设置git 提交代码

    1 假设电脑上已经下载了git 如果没有可以到官网上去下载,百度搜索git 就行呢了 看下操作步骤 2 3 4 设置git 之后就能在studio 开发工具的工具栏就显示 一个拉去代码一个提交代码 换 ...

  2. idea怎么提交到dev分支_IDEA设置git提交分支

    这篇随笔包含几个点 1.如何设置默认提交远端分支 2.如何切换本地/远端分支 3.无法切换远端分支报错 最近代码重新Clone下来,改完提交代码的时候,总会默认提交到master分支上,并非自己的开发 ...

  3. 微信小程序设置git提交、代码管理

    首先,把已建好git库(如未创建请先对git进行配置[git下载.安装及常规环境配置])项目导入开发者工具. 1.点击开发者工具右上角版本管理,然后点击设置. 2.设置用户信息(填写你的git账号:昵 ...

  4. IDEA设置git提交需要忽略的文件

    1.File->Settings *.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;__pycache__;_svn ...

  5. 【git】Enter passphrase for key 解决本地git 提交需要密钥问题

    原因 本地的ssh是加密的,如果安装过程中选择了输入密码来保证本地ssh不被滥用,那么就需要要在以后的使用过程中都输入当时指定的本地密码. 现象 本地提交代码报错 $ git pull Enter p ...

  6. git提交代码设置某些文件不可上传

    合作开发vue项目时,发现使用git提交代码时,由于部分人员习惯把所有变更的代码都提交上去,导致一些特殊文件老是出现合并冲突,从而大大增加合并代码的工作量. 那如何设置git提交时忽略某些特殊文件,设 ...

  7. 加密与解密的基本概念--GPG加密工具的使用

    加密与解密 信息传递中的风险:电脑黑客,流量失控,开发人员,高管习惯,商业间谍,合作伙伴,离职人员,出差人员等等方面. 什么是加密与解密 加密:发送方发送信息之前进行加密发送密文 解密:接收方接收密文 ...

  8. Git配置生成密钥连接Github

    一.安装Git Git官网下载: https://git-scm.com/download 我的环境是win7,安装在 C:\Program Files\Git 二.Git配置 1.Git安装成功后, ...

  9. yubikey复制_如何在Windows上使用YubiKey NEO和GPG和Keybase设置Signed Git提交

    yubikey复制 This week in obscure blog titles, I bring you the nightmare that is setting up Signed Git ...

  10. GIT如何设置只提交文件夹或者目录,而忽略内容?

    最近在做一个Django项目,使用了logs文件夹,项目框架大体如下: APITest -APITest -apps -static -templates -logs 但是提交到GIT的时候,我根目录 ...

最新文章

  1. 用onerror处理图片获取失败问题
  2. 第八期:实操:两台路由器,如何分别通过WAN和LAN口连接?
  3. python调试神器_python调试神器PySnooper的使用
  4. 《Reids 设计与实现》第一章 简单动态字符串和链表
  5. Python对DICOM图像进行阈值分割
  6. python基础之字符编码、文件处理
  7. 华为设备配置VRRP冗余链路 防止单点故障
  8. 【Android安全】ActivityManager.isUserAMonkey API
  9. 面向对象(冰箱装大象)
  10. iconfont字体图标以及css字体图标在线制作和使用(推荐)
  11. html 限制每行字数,毕业论文每行字数的设置
  12. https之证书验证
  13. CorelDRAW 学习笔记(一)
  14. 按揭贷款买房流程及注意事项详解 你准备好买房了吗
  15. Oracle Sequence创建与使用
  16. 【论文阅读】inception v1学习总结
  17. [Unity] 优化您的移动游戏性能2020(中)
  18. Inventor SDK入门---API设置零件材料
  19. 蓝牙协议分析(11)_BLE安全机制之Security Manager
  20. 如何提高图像分类准确率?

热门文章

  1. 2022华为杯研究生数学建模解题思路和代码思路
  2. 土豆网电影在线观看客户端官方版
  3. css 设置背景颜色失效?
  4. vue针对ele的form组件校验
  5. 清华大学计算机科学系王瑀屏,清华大学材料科学与工程系
  6. VBA用CDO批量发送邮件
  7. Chaotica for Mac(分形艺术图形设计工具)
  8. python编程100例海绵宝宝-Python_Turtle库画一只派大星
  9. js 微信小程序根据身份证号计算年龄
  10. MATLAB--数字图像处理 图像平移