gpg加密实践

发布时间 2023-08-22 19:28:46作者: 妇愁者纞萌

gpg文件加密

测试环境 linux ubuntu

1.创建秘钥

root@ubuntu:~# gpg --gen-key
gpg (GnuPG) 1.4.20; Copyright (C) 2015 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: directory `/root/.gnupg' created
gpg: new configuration file `/root/.gnupg/gpg.conf' created
gpg: WARNING: options in `/root/.gnupg/gpg.conf' are not yet active during this run
gpg: keyring `/root/.gnupg/secring.gpg' created
gpg: keyring `/root/.gnupg/pubring.gpg' created
Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0) 
Key does not expire at all
Is this correct? (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) <heinrichh@duesseldorf.de>"

Real name: fczlm
Email address: wgcn310@qq.com
Comment: gpg test
You selected this USER-ID:
    "fczlm (gpg test) <wgcn@qq.com>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
You need a Passphrase to protect your secret key.

  

如果报错

Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 100 more bytes)

执行

apt-get install rng-tools

rng -r /dev/urandom

 

gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 1A9A90CB marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
pub   2048R/1A9A90CB 2023-08-22
      Key fingerprint = E5D3 F137 B2F9 6BFB 0B85  EA08 CE08 06B1 1A9A 90CB
uid                  fczlm (gpg test) <wgcn@qq.com>
sub   2048R/FAD977B7 2023-08-22

  

/root/.gnupg

-rw------- 1 root root 9398 Aug 22 18:03 gpg.conf
-rw------- 1 root root 2384 Aug 22 18:19 pubring.gpg
-rw------- 1 root root 2384 Aug 22 18:19 pubring.gpg~
-rw------- 1 root root  600 Aug 22 18:19 random_seed
-rw------- 1 root root 5172 Aug 22 18:19 secring.gpg
-rw------- 1 root root 1360 Aug 22 18:19 trustdb.gpg

  

公钥:pubring.gpg,私钥:secring.gpg

公钥的密钥ID 1A9A90CB

私钥密码是解密时需要的,密钥ID是对文件进行加密需要的。

 

2. 生成撤销证书

可选,以备密钥作废时,请求外部的公钥服务器撤销公钥。

root@ubuntu:~/.gnupg# gpg --gen-revoke 7FF3CFEC

sec  2048R/7FF3CFEC 2023-08-22 fczlm (gpg test) <wgcn310@q.com>

Create a revocation certificate for this key? (y/N) y
Please select the reason for the revocation:
  0 = No reason specified
  1 = Key has been compromised
  2 = Key is superseded
  3 = Key is no longer used
  Q = Cancel
(Probably you want to select 1 here)
Your decision? 0
Enter an optional description; end it with an empty line:
> 
Reason for revocation: No reason specified
(No description given)
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: "fczlm (gpg test) <wgcn@qq.com>"
2048-bit RSA key, ID 7FF3CFEC, created 2023-08-22

ASCII armored output forced.
Revocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1
Comment: A revocation certificate should follow

iQEfBCABAgAJBQJk5JjPAh0AAAoJEKP7Mkd/88/s4rwH/13808TQiv5MuYcitYZl
htvn3wBvz86/bL5tsNNMeiPhtgETNM3wBSKIDe+KOiq97Ow1rGZcEkgUbM/GAoRm
3mBXwOROBsZAEFfK52tp*****e1SEnXNvEePpOqDfVSY
IoLlIxiKoB937wZb52kZ5+wI1stRkrYOxQHfri9W9pDocZ+CQcYCIbgM5fUxtYik
cf5j47sM8rkBio6fn1fsLCeYfV8gKUyZ3BiUpvt4983tFVnQIppCiS31LCDmHqQ3
Px3FOAvqdj7ndjMJdsbNWG/x/yu/0wYt/jzGx12ykN/LMP979bbEu4sT0a+9H/y0
2rk=
=5m9j
-----END PGP PUBLIC KEY BLOCK-----

  

3.秘钥管理

列出秘钥

gpg -k 或者 gpg --list-keys           //列举公钥
gpg -K 或者 gpg --list-secret-keys   //列举私钥

 

删除秘钥

gpg --delete-key [用户ID]         # 删除公钥
gpg --delete-secret-keys [用户ID]    # 删除私钥

  

导出秘钥

gpg --armor  --export [用户ID] --output public-key.txt
gpg --armor  --export-secret-keys --output private-key.txt

  

4.加解密

加密text.txt

gpg --recipient [用户ID] --output test.txt.gpg --encrypt test.txt

  

解密

gpg --output test2.txt --decrypt test.txt.gpg 

  

输入密码即可