使用GPG命令对文件进行对称加(解)密与非对称加(解)密。

对称加密命令如下:

新建一个任意文件,并对其加密。

gpg -c 文件         //提示输入密码,且需要两次

加密后生成一个文件:文件.gpg

对称解密命令如下:

gpg -d 文件.gpg


非对称加密:

需要创建一对匹配的公私钥,公钥加密,私钥解密。

生成秘钥对之前先清空gnupg文件夹:

rm -rf /root/.gnupg/

使用 gpg --gen-key 命令生成秘钥对:

]# gpg --gen-key
gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: 已创建目录‘/root/.gnupg’
gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/root/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/root/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/root/.gnupg/pubring.gpg’已建立
请选择您要使用的密钥种类:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (仅用于签名)
   (4) RSA (仅用于签名)
您的选择? 
RSA 密钥长度应在 1024 位与 4096 位之间。
您想要用多大的密钥尺寸?(2048)
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 
密钥永远不会过期
以上正确吗?(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) <[email protected]>"

真实姓名:teddyou
电子邮件地址:[email protected]
注释:null
您选定了这个用户标识:
    “teddyou (null) <[email protected]>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O
您需要一个密码来保护您的私钥。

我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 3AD43615 被标记为绝对信任
公钥和私钥已经生成并经签名。

gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  1 已签名:  0 信任度:0-,0q,0n,0m,0f,1u
pub   2048R/3AD43615 2019-01-28
密钥指纹 = 80DC 9B7D 2836 F83A 3252  48B5 2056 677E 3AD4 3615
uid                  teddyou (null) <[email protected]>
sub   2048R/FC85D2A6 2019-01-28

            ┌─────────────────────────────────────────────────────┐
            │ 请输入密码                                          │
            │                                                     │
            │                                                     │
            │ Passphrase ________________________________________ │
            │                                                     │
            │       <OK>                             <Cancel>     │
            └─────────────────────────────────────────────────────┘
输入两次密码确认。

生成文件如下:

[[email protected] ~]# cd ~/.gnupg/
[[email protected] .gnupg]# ls
gpg.conf           pubring.gpg   random_seed  S.gpg-agent
private-keys-v1.d  pubring.gpg~  secring.gpg  trustdb.gpg

其中公钥为:pubring.gpg

私钥为:secring.gpg


导出公钥,并发送给其他主机:

[[email protected] .gnupg]# gpg --export -a > user.pub
[[email protected] .gnupg]# scp user.pub 176.204.22.100:/root


导入其他主机发来的公钥文件:

[[email protected] ~]# rm -rf /root/.gnupg/
[[email protected] ~]# gpg --import ./user.pub 
gpg: 已创建目录‘/root/.gnupg’
gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/root/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
gpg: 钥匙环‘/root/.gnupg/secring.gpg’已建立
gpg: 钥匙环‘/root/.gnupg/pubring.gpg’已建立
gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库
gpg: 密钥 3AD43615:公钥“teddyou (null) <[email protected]>”已导入
gpg: 合计被处理的数量:1
gpg:           已导入:1  (RSA: 1)


公钥加密文件:(-r 跟上创建秘钥对时输入的真实姓名)

gpg -e -r teddyou 文件


私钥解密文件:

gpg -d 文件.gpg


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。