GPG非对称加密
我们需要两个账户进行操作,user1、use2;#这个实验需要我们在图形机上去做;
1.创建加密文件
[user1@logan ~]$ echo hello user2 > a.txt [user1@logan ~]$ ls a.txt 公共 模板 视频 图片 文档 下载 音乐 桌面
2.我们要去user2中生成密钥对
[user2@logan ~]$ 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. 请选择您要使用的密钥种类: default (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (仅用于签名) (4) RSA (仅用于签名) 您的选择? RSA 密钥长度应在 1024 位与 4096 位之间。 您想要用多大的密钥尺寸?(2048)1024 您所要求的密钥尺寸是 1024 位 请设定这把密钥的有效期限。 0 = 密钥永不过期 <n> = 密钥在 n 天后过期 <n>w = 密钥在 n 周后过期 <n>m = 密钥在 n 月后过期 <n>y = 密钥在 n 年后过期 密钥的有效期限是?(0) 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) <heinrichh@duesseldorf.de>" 真实姓名:user2 电子邮件地址:user2@123.com 注释:test user2 您选定了这个用户标识: “user2 (test user2) <user2@123.com>” 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? O
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。 gpg: /home/user2/.gnupg/trustdb.gpg:建立了信任度数据库 gpg: 密钥 37EC7F7B 被标记为绝对信任 公钥和私钥已经生成并经签名。 gpg: 正在检查信任度数据库 gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型 gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u pub 1024R/37EC7F7B 2019-07-26 密钥指纹 = 77B9 AE56 4E9D 2DB4 E2BE 6834 F9A5 E748 37EC 7F7B uid user2 (test user2) <user2@123.com> sub 1024R/5B9E893A 2019-07-26
3.查看一下我们的密钥对
这是公钥
[user2@logan ~]$ gpg --list-key /home/user2/.gnupg/pubring.gpg ------------------------------ pub 1024R/37EC7F7B 2019-07-26 uid user2 (test user2) <user2@123.com> sub 1024R/5B9E893A 2019-07-26
这是私钥
[user2@logan ~]$ gpg --list-secret-key /home/user2/.gnupg/secring.gpg ------------------------------ sec 1024R/37EC7F7B 2019-07-26 uid user2 (test user2) <user2@123.com> ssb 1024R/5B9E893A 2019-07-26
4.我们需要把公钥从钥匙环中摘出来
[user2@logan ~]$ gpg --export --armor > /tmp/user2.key [user2@logan ~]$ cat /tmp/user2.key -----BEGIN PGP PUBLIC KEY BLOCK----- Version: GnuPG v2.0.22 (GNU/Linux) mI0EXTq0tQEEANIThJw/IH4HgrVsYj+rY1qQL0m/2eFr0cchZPASqhexCSpSEviw ciMH1DePWUN+p8EYcYrwXd8gn+lMd3ExOR5T1sVPCK5nbUJ1RPA9P9autWz7FgtV fkpWmvtJ7XlO6bvzGziPMMabEB4X2+KzpLsjud8kNXUlHF0kYrT/qqk9ABEBAAG0 InVzZXIyICh0ZXN0IHVzZXIyKSA8dXNlcjJAMTIzLmNvbT6IuQQTAQIAIwUCXTq0 tQIbAwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJEPml50g37H97/GwD/jOo MPm/ot6y3BWmrFnZA4X5jVry5/XBTSUBFHzSom0rqOWPJs1tmNjCfbCY54bnX3an bX6PloWuAzp+w0FDN1/BlbUnFkW7pqABJJev731DXzVairzyWw/BsgN7/hsS6PIT llAOeSINCBPqM1Nqh1wgBbnCnlVOuVNiCK5wj3ARuI0EXTq0tQEEAJZVzRbWU8DR 2j7HDQVKSuyjcN1pUd3gyR/tlg107dpD1HcoB3KTUvrX4QvSMHx3YyDnNDSSJGrc Z8dpoJfxH5jTynY533Tu6+ri1sskQqQo7iEBDYloAqspTx1LsdKnhQirJbjfSuCD AI81TuLA1fusDZwex8wgyFqVkrmF6a4nABEBAAGInwQYAQIACQUCXTq0tQIbDAAK CRD5pedIN+x/e8O1BACcwpTEoE6Yt7EVTZuTEQJJdQX2DsQqYj7aO7ptGVAyZBlu lJ5v3okuodQGG5a/Kvd8J/sbEIWyt1u8QzxAwvLf9J6OkYBCQ2NeV/9/5fPPuZM7 PtMTQJF6i/2QLb/pxTgoEpO3wgL0GjXqv6hBsguIyJ3uevKkaq9Y1wOINnvP1Q== =2Gbd -----END PGP PUBLIC KEY BLOCK-----
5.user1 需要用user2的公钥加密自己的文件
[user1@logan ~]$ cp /tmp/user2.key . [user1@logan ~]$ ls a.txt user2.key 公共 模板 视频 图片 文档 下载 音乐 桌面
6.将公钥挂到自己的钥匙环中
[user1@logan ~]$ gpg --import user2.key gpg: 已创建目录‘/home/user1/.gnupg’ gpg: 新的配置文件‘/home/user1/.gnupg/gpg.conf’已建立 gpg: 警告:在‘/home/user1/.gnupg/gpg.conf’里的选项于此次运行期间未被使用 gpg: 钥匙环‘/home/user1/.gnupg/secring.gpg’已建立 gpg: 钥匙环‘/home/user1/.gnupg/pubring.gpg’已建立 gpg: /home/user1/.gnupg/trustdb.gpg:建立了信任度数据库 gpg: 密钥 37EC7F7B:公钥“user2 (test user2) <user2@123.com>”已导入 gpg: 合计被处理的数量:1 gpg: 已导入:1 (RSA: 1)
7.对需要加密的文件进行加密
[user1@logan ~]$ gpg --encrypt --armor -r user2 a.txt gpg: 5B9E893A:没有证据表明这把密钥真的属于它所声称的持有者 pub 1024R/5B9E893A 2019-07-26 user2 (test user2) <user2@123.com> 主钥指纹: 77B9 AE56 4E9D 2DB4 E2BE 6834 F9A5 E748 37EC 7F7B 子钥指纹: 6F18 58F2 B6BC 037A A14D 69E6 3E94 8284 5B9E 893A 这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自 己在做什么,您可以在下一个问题回答 yes。 无论如何还是使用这把密钥吗?(y/N)y [user1@logan ~]$ ls a.txt a.txt.asc user2.key 公共 模板 视频 图片 文档 下载 音乐 桌面 生成了加密文件a.txt.asc
8.将加密后的文件交给user2
[user1@logan ~]$ mv a.txt.asc /tmp/ [user1@logan ~]$ ls /tmp/ a.txt.asc user2.key
9.user2解密,这里我们需要输入私钥密码;
[user2@logan ~]$ ls a.txt.asc [user2@logan ~]$ gpg a.txt.asc 您需要输入密码,才能解开这个用户的私钥:“user2 (test user2) <user2@123.com>” 1024 位的 RSA 密钥,钥匙号 5B9E893A,建立于 2019-07-26 (主钥匙号 37EC7F7B) gpg: 由 1024 位的 RSA 密钥加密,钥匙号为 5B9E893A、生成于 2019-07-26 “user2 (test user2) <user2@123.com>” [user2@logan ~]$ ls a.txt a.txt.asc 我们的文件解密完成
9.验证
[user2@logan ~]$ cat a.txt hello user2
实验完成;