一、数据的加密方式

数据加密有三种方式:

1、对称加密(算法有:DES、AES、3DES、)加密和解密使用同一个密钥

2、非对称加密(RSA、DSA、ELGamal等等)一共四把钥匙,用公钥加密数据,只能使用与之配对的私钥解密;反之亦然

3、单项加密(md5  sha1 sha2 sha128 sha256 sha512等)算出数据的hash值,当数据发生微弱的变化都会产生雪崩效应,所生成的新的hash值将变得完全不一样,主要用于数据校验。

二、几种加密方式的特点

1、对称加密:

优点:加密、解密使用同一个密钥,效率高,将原始数据分割成固定大小的块,逐个进行加密
缺点:密钥过多,密钥分发,最主要的:数据来源无法确认

2、非对称秘钥加密:

优点:用公钥加密数据,只能使用与之配对的私钥解密;反之亦然,加密系数高
缺点:密钥长,加密解密效率低下,尤其解密效率极其低下。
适用场景:

数字签名:主要在于让接收方确认发送方身份

3、单项加密:

类似于指纹,将任意数据缩小成固定大小的“指纹”,任意长度的数据都可以,但是以固定长度输出,如果修改数据,则会产生雪崩效应,生成新的hash值完全不同。
但是无法从指纹反推回原始数据。
适用场景:

数据完整性校验,数据可靠性校验。

三、gpg加密工具

1、实现对称和非对称加密

1)、对称加密演示

  1. [root@newhostname app]# echo 'Ok ok ok ok ok ' > fist_encrypt
  2. [root@newhostname app]# ls
  3. fist_encrypt
  4. [root@newhostname app]# gpg -c fist_encrypt #对文件进行加密
  5. gpg: 已创建目录‘/root/.gnupg’
  6. gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已建立
  7. gpg: 警告:在‘/root/.gnupg/gpg.conf’里的选项于此次运行期间未被使用
  8. gpg: 钥匙环‘/root/.gnupg/pubring.gpg’已建立
  9. [root@newhostname app]# ls
  10. fist_encrypt fist_encrypt.gpg #fist_encrypt.gpg这个就是加密过的文件

执行 gpg -c fist_encrypt会出现两次如下图

输入一个密码,加密就完成了,我们来看一下这个文件fist_encrypt.gpg

  1. [root@newhostname app]# cat fist_encrypt.gpg
  2. gKf_);root@newhostname:/app[root@newhostname app]#

已经实现了加密

现在我们将这个文件拷贝到其他主机,并进行解密

  1. [root@joker-6-01 ~]# cd /app
  2. [root@joker-6-01 app]# rm -rf fist
  3. [root@joker-6-01 app]# gpg -d fist_encrypt.gpg >fist
  4. gpg: CAST5 encrypted data
  5. can't connect to `/root/.gnupg/S.gpg-agent': No such file or directory
  6. gpg: encrypted with 1 passphrase
  7. Ok ok ok ok ok
  8. gpg: WARNING: message was not integrity protected
  9. [root@joker-6-01 app]# ls
  10. fist_encrypt.gpg
  11. [root@joker-6-01 app]#

解密需要输入密码,同上图

现在我们看一下生成的新文件

  1. [root@joker-6-01 app]# cat fist
  2. Ok ok ok ok ok

总结: 通过gpg -c file 进行文件加密,并生成一个 file.gpg的新文件  ,通过 gpg -d file.gpg >file 可以进行解密

2)通过gpg工具进行非对称的文件加密(我们需要两对秘钥)

hostA上操作:

  1. [root@newhostname app]# gpg --gen-key #创建密钥对
  2. gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
  3. This is free software: you are free to change and redistribute it.
  4. There is NO WARRANTY, to the extent permitted by law.
  5. gpg: 钥匙环‘/root/.gnupg/secring.gpg’已建立
  6. 请选择您要使用的密钥种类:
  7. (1) RSA and RSA (default)
  8. (2) DSA and Elgamal
  9. (3) DSA (仅用于签名)
  10. (4) RSA (仅用于签名)
  11. 您的选择? 1
  12. RSA 密钥长度应在 1024 位与 4096 位之间。
  13. 您想要用多大的密钥尺寸?(2048)1024
  14. 您所要求的密钥尺寸是 1024 位
  15. 请设定这把密钥的有效期限。
  16. 0 = 密钥永不过期
  17. <n> = 密钥在 n 天后过期
  18. <n>w = 密钥在 n 周后过期
  19. <n>m = 密钥在 n 月后过期
  20. <n>y = 密钥在 n 年后过期
  21. 密钥的有效期限是?(0) 0
  22. 密钥永远不会过期
  23. 以上正确吗?(y/n)y

1到这里会出现下面四个图,意思是让我们再对私钥进行加密,我们一路回车,因为只是测试,所以就不再加密了。

一路回车过后,秘钥生成完毕

  1. You need a user ID to identify your key; the software constructs the user ID
  2. from the Real Name, Comment and Email Address in this form:
  3. "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
  4. 真实姓名:zhang
  5. 电子邮件地址:765030447@qq.com
  6. 注释:test
  7. 您选定了这个用户标识:
  8. “zhang (test) <765030447@qq.com>”
  9. 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?o
  10. 您需要一个密码来保护您的私钥。
  11. 您不想要有密码――这个想法实在是遭透了!
  12. 不过,我仍然会照您想的去做。您任何时候都可以变更您的密码,仅需要
  13. 再次执行这个程序,并且使用“--edit-key”选项即可。
  14. 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
  15. 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
  16. 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
  17. 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
  18. gpg: /root/.gnupg/trustdb.gpg:建立了信任度数据库
  19. gpg: 密钥 11F74DDB 被标记为绝对信任
  20. 公钥和私钥已经生成并经签名。
  21. gpg: 正在检查信任度数据库
  22. gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
  23. gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
  24. pub 1024R/11F74DDB 2018-01-06
  25. 密钥指纹 = E1F8 DE1D B979 48F4 A216 DCB7 D5B9 E6A3 11F7 4DDB
  26. uid zhang (test) <765030447@qq.com>
  27. sub 1024R/710D443B 2018-01-06

我们看一下我们生成的秘钥,在自己的家目录下的.gnupg目录下

  1. [root@newhostname .gnupg]# pwd
  2. /root/.gnupg
  3. [root@newhostname .gnupg]# ll
  4. 总用量 28
  5. -rw-------. 1 root root 7680 1月 6 19:45 gpg.conf
  6. drwx------. 2 root root 6 1月 6 19:45 private-keys-v1.d
  7. -rw-------. 1 root root 675 1月 6 20:12 pubring.gpg
  8. -rw-------. 1 root root 675 1月 6 20:12 pubring.gpg~
  9. -rw-------. 1 root root 600 1月 6 20:12 random_seed
  10. -rw-------. 1 root root 1338 1月 6 20:12 secring.gpg
  11. srwxr-xr-x. 1 root root 0 1月 6 20:12 S.gpg-agent
  12. -rw-------. 1 root root 1280 1月 6 20:12 trustdb.gpg
  13. pubring.gpg 这个是公钥
  14. secring.gpg 这个是私钥

我们导出公钥

  1. [root@newhostname .gnupg]# gpg --list-key #可以查看公钥
  2. /root/.gnupg/pubring.gpg
  3. ------------------------
  4. pub 1024R/11F74DDB 2018-01-06
  5. uid zhang (test) <765030447@qq.com>
  6. sub 1024R/710D443B 2018-01-06
  7. [root@newhostname .gnupg]# gpg -a --export -o zhang.pubkey #导出公钥并生成可视的字符
  8. [root@newhostname .gnupg]# ls
  9. gpg.conf private-keys-v1.d pubring.gpg pubring.gpg~ random_seed secring.gpg S.gpg-agent trustdb.gpg zhang.pubkey
  10. [root@newhostname .gnupg]# ll
  11. 总用量 32
  12. -rw-------. 1 root root 7680 1月 6 19:45 gpg.conf
  13. drwx------. 2 root root 6 1月 6 19:45 private-keys-v1.d
  14. -rw-------. 1 root root 675 1月 6 20:12 pubring.gpg
  15. -rw-------. 1 root root 675 1月 6 20:12 pubring.gpg~
  16. -rw-------. 1 root root 600 1月 6 20:12 random_seed
  17. -rw-------. 1 root root 1338 1月 6 20:12 secring.gpg
  18. srwxr-xr-x. 1 root root 0 1月 6 20:12 S.gpg-agent
  19. -rw-------. 1 root root 1280 1月 6 20:12 trustdb.gpg
  20. -rw-r--r--. 1 root root 1020 1月 6 20:37 zhang.pubkey
  21. [root@newhostname .gnupg]# cat zhang.pubkey #查看导出的公钥
  22. -----BEGIN PGP PUBLIC KEY BLOCK-----
  23. Version: GnuPG v2.0.22 (GNU/Linux)
  24. mI0EWlC9RgEEAMaYQLcdCujOTwdKiBLPfSrhwceFqt7FGT/xBggSNHs8c9EyQ/8T
  25. ls7PiiaK4drm0mdPtIPr/pa6m2T20mFB0DMpeB9SEI+z7v/jWB/Y1xxINjGvFtKP
  26. JSwFSa8qYUNLBYpBIPoa5IlXpzrkG+gRvHh++7yu8e4e06oA9lAzWT2rABEBAAG0
  27. H3poYW5nICh0ZXN0KSA8NzY1MDMwNDQ3QHFxLmNvbT6IuQQTAQIAIwUCWlC9RgIb
  28. AwcLCQgHAwIBBhUIAgkKCwQWAgMBAh4BAheAAAoJENW55qMR903btFMEAIm/9HWT
  29. ofXbTTVUbjFMV8MSYU+TRj1n2xuPKDaWLgJyb2cH9c/57RMS5bHqvqEBxOzrtnXB
  30. 2FPYiS8VHgLhvnUkMqer1WA7RjVESAcp52UKvoI+7yD5K7vABMg9yDPnNag2EKLr
  31. H7db0wspYo5ox3w8AZsJj3dUMLgipAQDUpckuI0EWlC9RgEEAK0PxCRuHLL3XUC6
  32. wDr4gSRj5TVcwVuSOE0ECBZakbDeuljhq9Fn0UR8FfdiPOw4Cakt0RWiYh9oxdsF
  33. R3Y6DL6fzBAwozxz1I5NXtTj68HY+/6bEiHtz4xvFPR9YEwrqzPZWaWMaTRgtAL6
  34. n/ONYQKPHa82p2qIdzv7+y59u9zRABEBAAGInwQYAQIACQUCWlC9RgIbDAAKCRDV
  35. ueajEfdN204xA/9ZVVqFAnFti6vogSCzPMFDj6s4M66EBGEUIKkK9cnw1vzXzsv3
  36. v8YfevZsWGMX7Cag89a3ox+qIVvHhsEkL3TXEAmrYLZn9/T/E1yRQnYpQcI9uvMg
  37. /UAy3j0HtOzui4ofMuGoNJ1V7hOMt8Jlzt2+WQVvVogHcNWmEUSWcmIp8w==
  38. =o0NK
  39. -----END PGP PUBLIC KEY BLOCK-----
  40. [root@newhostname .gnupg]#

将公钥文件拷贝到hostB机器

  1. [root@newhostname .gnupg]# scp zhang.pubkey 172.18.30.254:~
  2. root@172.18.30.254's password:
  3. zhang.pubkey 100% 1020 2.9MB/s 00:00

2)、在hostB上操作:

同样的方法生成自己的密钥对

  1. [root@joker-6-01 ~]# gpg --gen-key
  2. gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
  3. This is free software: you are free to change and redistribute it.
  4. There is NO WARRANTY, to the extent permitted by law.
  5. Please select what kind of key you want:
  6. (1) RSA and RSA (default)
  7. (2) DSA and Elgamal
  8. (3) DSA (sign only)
  9. (4) RSA (sign only)
  10. Your selection?
  11. RSA keys may be between 1024 and 4096 bits long.
  12. What keysize do you want? (2048) 1024
  13. Requested keysize is 1024 bits
  14. Please specify how long the key should be valid.
  15. 0 = key does not expire
  16. <n> = key expires in n days
  17. <n>w = key expires in n weeks
  18. <n>m = key expires in n months
  19. <n>y = key expires in n years
  20. Key is valid for? (0)
  21. Key does not expire at all
  22. Is this correct? (y/N)
  23. Key is valid for? (0)
  24. Key does not expire at all
  25. Is this correct? (y/N) y
  26. GnuPG needs to construct a user ID to identify your key.
  27. Real name: shang
  28. Email address: 765030447@qq.com
  29. Comment: test
  30. You selected this USER-ID:
  31. "shang (test) <765030447@qq.com>"
  32. Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

查看秘钥,并导出公钥

  1. [root@joker-6-01 .gnupg]# gpg --list-key
  2. /root/.gnupg/pubring.gpg
  3. ------------------------
  4. pub 1024R/7FFA70D9 2018-01-06
  5. uid shang (test) <765030447@qq.com>
  6. sub 1024R/E774B778 2018-01-06
  7. [root@joker-6-01 .gnupg]# gpg -a --export -o shang.pubkey
  8. [root@joker-6-01 .gnupg]# ls
  9. gpg.conf private-keys-v1.d pubring.gpg pubring.gpg~ random_seed secring.gpg shang.pubkey trustdb.gpg
  10. [root@joker-6-01 .gnupg]# ll
  11. total 36
  12. -rw-------. 1 root root 7856 Nov 7 16:31 gpg.conf
  13. drwx------ 2 root root 4096 Jan 6 20:02 private-keys-v1.d
  14. -rw------- 1 root root 674 Jan 6 21:02 pubring.gpg
  15. -rw------- 1 root root 674 Jan 6 21:02 pubring.gpg~
  16. -rw------- 1 root root 600 Jan 6 21:02 random_seed
  17. -rw------- 1 root root 1338 Jan 6 21:02 secring.gpg
  18. -rw-r--r-- 1 root root 1016 Jan 6 21:05 shang.pubkey
  19. -rw-------. 1 root root 1280 Jan 6 21:02 trustdb.gpg
  20. [root@joker-6-01 .gnupg]# cat shang.pubkey
  21. -----BEGIN PGP PUBLIC KEY BLOCK-----
  22. Version: GnuPG v2.0.14 (GNU/Linux)
  23. mI0EWlDI3QEEANDr6fIRum7F1tdaJH6TI+O5QpKf3f1zEacmqqH3iQ+eIJkUZDTG
  24. yC9k87zKQVaDgbZlcn38Lf/u7X3pRemsGa8ZMkmviHCc7gfW5C0NmMse7/dKGUmt
  25. 6xOnVRsgk+WYDGwpxI0rhRxzDg0AIpNH20wZpK6bgNwoC8i5zIO605tRABEBAAG0
  26. H3NoYW5nICh0ZXN0KSA8NzY1MDMwNDQ3QHFxLmNvbT6IuAQTAQIAIgUCWlDI3QIb
  27. AwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQNG0fpn/6cNkZ7wP+Oy6X24Tt
  28. WZQ5T4LYc9go7RuU8vDIMHQzEC0CXO9pi3ZU7quEYDfd5N9WD61+jKY9s79L09tK
  29. 14RQJByWaFFXJwWyrjzu4BzMZiAmjDf9PA5hpUVFOAdQbMKENlXOh3Rxsi65EsAH
  30. Hem/Plbr75dEN+CQV8emlZ2tDDBYhmbbkzC4jQRaUMjdAQQAzg1FrRac6KyerWt+
  31. oJ83B9eDLn6Yq9xBA6W1MdRTZKOEKygkbGP7Slr7e7lWHKinlfRL7+9+2IjzurQZ
  32. ndWO/msAKxdnqIMbg7Xx1eXWr0VwvFAz2AHDQz+Ls3mkJ40ZCPbHKXRb5+7USWKB
  33. VHCubgMJ49VfTrxBwzCo2M5K3+MAEQEAAYifBBgBAgAJBQJaUMjdAhsMAAoJEDRt
  34. H6Z/+nDZLW0EAJ3oHrPWIGczgzSZ+ociwsmaVggqAky3BCfWhbUgJBEOAEh+SMSw
  35. WueVIKNT/bA3SVUak0PmNz1IkXLRYmiPA/81+I9ezUx0ac1noYO2MzYfdmaCFSBM
  36. sfnfvpbk6/L0FY0aIhcuufCztIs+bsxpsXXYfq4C5hyMI1S1S8YS0pDX
  37. =DHkG
  38. -----END PGP PUBLIC KEY BLOCK-----
  39. [root@joker-6-01 .gnupg]#

将hostB的公钥shang.pubkey拷贝到hostA

  1. [root@joker-6-01 .gnupg]# scp shang.pubkey 172.18.30.253:~
  2. The authenticity of host '172.18.30.253 (172.18.30.253)' can't be established.
  3. RSA key fingerprint is a4:04:ea:5b:ce:18:0c:e4:e8:b4:51:47:ea:87:0b:2b.
  4. Are you sure you want to continue connecting (yes/no)? yes
  5. Warning: Permanently added '172.18.30.253' (RSA) to the list of known hosts.
  6. root@172.18.30.253's password:
  7. shang.pubkey 100% 1016 1.0KB/s 00:00

A机器拿到了B的公钥:shang.pubkey
B机器拿到了A的公钥:zhang.pubkey

现在在各个机器上导入新拿到的公钥

  1. hostA
  2. [root@newhostname app]# gpg --import ~/shang.pubkey
  3. gpg: 密钥 7FFA70D9:公钥“shang (test) <765030447@qq.com>”已导入
  4. gpg: 合计被处理的数量:1
  5. gpg: 已导入:1 (RSA: 1)
  6. hostB
  7. [root@joker-6-01 ~]# gpg --import zhang.pubkey
  8. gpg: key 11F74DDB: public key "zhang (test) <765030447@qq.com>" imported
  9. gpg: Total number processed: 1
  10. gpg: imported: 1 (RSA: 1)

现在我们在A机器使用B的公钥加密/app/fist_encrypt,并将生成的文件拷贝到B

  1. [root@newhostname app]# gpg -e -r shang fist_encrypt
  2. gpg: E774B778:没有证据表明这把密钥真的属于它所声称的持有者
  3. pub 1024R/E774B778 2018-01-06 shang (test) <765030447@qq.com>
  4. 主钥指纹: 5042 4F44 8DE2 F9EA 1A02 BBC8 346D 1FA6 7FFA 70D9
  5. 子钥指纹: BB56 2ED6 84DA 2DB7 A6A6 AFF2 122E ED1C E774 B778
  6. 这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
  7. 己在做什么,您可以在下一个问题回答 yes。
  8. 无论如何还是使用这把密钥吗?(y/N)y
  9. [root@newhostname app]# ls
  10. fist_encrypt fist_encrypt.gpg

将新生成的加密文件拷贝到hostB上

  1. [root@newhostname app]# ls
  2. fist_encrypt fist_encrypt.gpg
  3. [root@newhostname app]# scp fist_encrypt.gpg root@172.18.30.254:/app
  4. root@172.18.30.254's password:
  5. fist_encrypt.gpg 100% 222 377.5KB/s 00:00
  6. [root@newhostname app]#

到B机器上,使用B的私钥进行解密

  1. [root@joker-6-01 app]# ls
  2. fist_encrypt.gpg
  3. [root@joker-6-01 app]# cat fist_encrypt.gpg
  4. %qXd46-}a>yݸ;n$
  5. jtyY T>AWK}@jBRW1
  6. ~0>[root@joker-6-01 app]#
  7. [root@joker-6-01 app]#
  8. [root@joker-6-01 app]# gpg -d fist_encrypt.gpg > fist_encrypt #对文件进行解密,并输出到fistt_encrypt内
  9. gpg: encrypted with 1024-bit RSA key, ID E774B778, created 2018-01-06
  10. "shang (test) <765030447@qq.com>"
  11. [root@joker-6-01 app]# ls
  12. fist_encrypt fist_encrypt.gpg
  13. [root@joker-6-01 app]# cat fist_encrypt #解密完成
  14. Ok ok ok ok ok

对称的加密解密完成了,现在我们删除秘钥

hostA上操作:

  1. [root@newhostname app]# gpg --delete-keys shang #在A上删除B的公钥
  2. gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
  3. This is free software: you are free to change and redistribute it.
  4. There is NO WARRANTY, to the extent permitted by law.
  5. pub 1024R/7FFA70D9 2018-01-06 shang (test) <765030447@qq.com>
  6. 要从钥匙环里删除这把密钥吗?(y/N)y
  7. [root@newhostname app]#
  1. [root@newhostname app]# gpg --delete-secret-keys zhang #在A机器上删除自己的私钥
  2. gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
  3. This is free software: you are free to change and redistribute it.
  4. There is NO WARRANTY, to the extent permitted by law.
  5. sec 1024R/11F74DDB 2018-01-06 zhang (test) <765030447@qq.com>
  6. 要从钥匙环里删除这把密钥吗?(y/N)y
  7. 这是一把私钥!――真的要删除吗?(y/N)y
  8. [root@newhostname app]# gpg --delete-keys zhang #再删除自己的公钥
  9. gpg (GnuPG) 2.0.22; Copyright (C) 2013 Free Software Foundation, Inc.
  10. This is free software: you are free to change and redistribute it.
  11. There is NO WARRANTY, to the extent permitted by law.
  12. pub 1024R/11F74DDB 2018-01-06 zhang (test) <765030447@qq.com>
  13. 要从钥匙环里删除这把密钥吗?(y/N)y
  14. 注意:必须先删除私钥再删除公钥

hostB上操作:

  1. [root@joker-6-01 app]# gpg --delete-keys zhang #在B上删除A的公钥
  2. gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
  3. This is free software: you are free to change and redistribute it.
  4. There is NO WARRANTY, to the extent permitted by law.
  5. pub 1024R/11F74DDB 2018-01-06 zhang (test) <765030447@qq.com>
  6. Delete this key from the keyring? (y/N) y
  7. [root@joker-6-01 app]#
  1. [root@joker-6-01 app]# gpg --delete-secret-keys shang #删除自己的私钥
  2. gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
  3. This is free software: you are free to change and redistribute it.
  4. There is NO WARRANTY, to the extent permitted by law.
  5. sec 1024R/7FFA70D9 2018-01-06 shang (test) <765030447@qq.com>
  6. Delete this key from the keyring? (y/N) y
  7. This is a secret key! - really delete? (y/N) y
  8. [root@joker-6-01 app]# gpg --delete-keys shang #删除自己的公钥
  9. gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
  10. This is free software: you are free to change and redistribute it.
  11. There is NO WARRANTY, to the extent permitted by law.
  12. pub 1024R/7FFA70D9 2018-01-06 shang (test) <765030447@qq.com>
  13. Delete this key from the keyring? (y/N) y

命令总结:

对称加密方法:

1、gpg -c file         生成一个file.gpg的加密文件
2、gpg -d file.gpg > file    解密file.gpg并将输出存入file文件

非对称加密方法:

第一步:

A机器:

1、gpg –gen-key   生成公私钥对
2、gpg -a –export Akey_name.pubkey
3、scp Akey_name.pubkey B机器:~/

B机器:

1、gpg–gen-key 生成公私钥对
2、gpg -a –export Bkey_name.pubkey
3、scp Bkey_name.pubkey A机器:~/

第二步:

1、gpg  –import ~/Bkey_name 在A机器上导入B机器的公钥
2、gpg –import ~/Akey_name 在B机器上导入A机器的公钥

第三步:

1、gpg -e -r Bkey_name file1       在A机器使用B的公钥对文件进行加密
2、gpg -e -r Akey_name file2       在B机器使用A的公钥对文件进行加密

第四步

1、scp file1.gpg  B机器:~   在A机器,将用B公钥加密的文件传输给B机器
2、scp file2.gpg A机器:~   在B机器,将用A公钥加密的文件传输给A机器

第五步

1、gpg -d file2.gpg >file2  在A机器,将B传送来的文件解密(默认会使用A自己的私钥来解密)
2、gpg -d file1.gpg > file1 在B机器,将A传送来的文件解密(默认会使用B自己的私钥来解密)

使用gpg来加密数据的更多相关文章

  1. 烂泥:gpg加解密软件学习

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真 ...

  2. Windows上使用Thunderbird与GPG发送和解密公钥加密的电子邮件

    作者:荒原之梦 原文链接:http://zhaokaifeng.com/?p=552 非对称加密的原理: 最先出现的加密方法是对称加密.在对称加密算法中是不区分公钥和私钥的,加密与解密使用的都是同一个 ...

  3. 加密和数字签名工具GPG

    转载: 源文件位置:http://blog.chinaunix.net/uid-9525959-id-2001824.html GPG [功能]  GPG是加密和数字签名的免费工具,大多用于加密信息的 ...

  4. Linux操作系统安全-使用gpg实现对称加密

    Linux操作系统安全-使用gpg实现对称加密 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.gpg工具包概述 1>.什么是gpg GnuPG是GNU负责安全通信和数据存 ...

  5. GPG(pgp)加解密中文完整教程

    一.介绍 我们都知道,互联网是不安全的,但其上所使用的大部分应用,如Web.Email等一般都只提供明文传输方式(用https.smtps等例外).所以,当我们需要传输重要文件时,应该对当中的信息加密 ...

  6. GPG终极指南(加密/签名)

    我们平时都听过非对称加密,公钥和私钥,签名验证,但这些证书都是怎么得到的呢?本篇文章会解答这些问题. 背景介绍 加密的一个简单但又实用的任务就是发送加密电子邮件.多年来,为电子邮件进行加密的标准一直是 ...

  7. 【WP开发】不同客户端之间传输加密数据

    在上一篇文章中,曾说好本次将提供一个客户端之间传输加密数据的例子.前些天就打算写了,只是因一些人类科技无法预知的事情发生,故拖到今天. 本示例没什么技术含量,也没什么亮点,Bug林立,只不过提供给有需 ...

  8. 使用 gpg 加密文件 - 通过 shell 或 php

    使用 gpg 加密文件 - 通过 shell 或 php 背景:客户提供私钥,并要求我方通过php把加密后的文件传输给他们. 环境 macOS Sierra 10.12.1 php 7.0.8 0.安 ...

  9. Ubuntu 更新源失败[GPG error]

    对于错误 GPG error: http://ppa.launchpad.net precise Release: The following signatures couldn't be verif ...

随机推荐

  1. python中 __file__的小坑坑

    在python脚本中,我们难免会需要用到自身文件所在的绝对路径,第一想法可能就是用os.path.dirname(__file__) 但是这里有个大坑,我就踩了,这种方式得到路径会出现问题,脚本执行报 ...

  2. springcloud 心得记录

    1.nacos,模块启动无加载顺序 2.nacos,线上配置中心修改文件后,需重启模块

  3. 小记--------spark的两种提交模式

    spark的两种提交模式:yarn-cluster . yarn-client 图解

  4. 【LOJ】#2985. 「WC2019」I 君的商店

    LOJ#2985. 「WC2019」I 君的商店 一道很神仙的题啊QAQ 居然是智商题--不是乱搞或者是大数据 我们可以用2N问出一个最大值是1 然后对于任意两个值\(x + y\)和\(a\)比较 ...

  5. 有关java5以后的线程

    创建线程的方式 方式一 继承于Thread类 /** * 多线程的创建,方式一:继承于Thread类 * 1. 创建一个继承于Thread类的子类 * 2. 重写Thread类的run() --> ...

  6. 牛客 40E 珂朵莉的数论题

    大意: 给定$x,y$, 求第$x$小的最小素因子为$y$的数, 若答案>1e9输出0. 若$y>=60$, 可以暴力筛出1e9/60以内的答案. 否则容斥+二分算出答案. #includ ...

  7. nginx代理 tomcat获得真实用户IP

    nginx代理 tomcat获得真实用户IP 2017年04月08日 21:34:17 cf 阅读数 1825更多 分类专栏: nginx html/js/ajax   版权声明:本文为博主原创文章, ...

  8. Java Serializable Objects(序列化)

    https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html 序列化一个对象,意味着把这个对象的状态转化为字节流,而且个字节流 ...

  9. Vue-CLI项目汇总

    Vue-CLI 项目搭建 Vue-CLI 项目在pycharm中配置 Vue-CLI 项目中相关操作 Vue-CLI项目中路由传参 Vue-CLI项目-vue-cookie与vue-cookies处理 ...

  10. 关于mysql事务的几件小事

    零.MyISAM和InnoDB关于锁的区别 ①MyISAM默认用的是表级锁,不支持行级锁. ②InnoDB默认用的是行级锁,也支持表级锁. ③共享锁和排它锁的兼容性 |X|排它锁|共享锁| -|-|- ...