我们在网上的发送的邮件时明文的,可以被截获,被我们的服务商获得,甚至可以被搜索出来,这时一件很恐怖的事情,如果是一般的嘘寒问暖的信息也就罢了。若是私信就危险了,所以呢,加密就很有必要了!!

什么是加/解密

  • 发送方 : 明文 -> 密文

-Tarena ==> 加密 ==> 25 31 24 23 46 31

  • 接收方 : 密文 -> 明文

-25 31 24 23 46 31==>解密 ==>Tarena

加密目的及方式

  • 确保数据的机密性

-对称加密: 加密/解密用同一个密钥

-非对称加密: 加密/解密用不同的密钥

  • 保护信息的完整性

-信息摘要:基于输入的信息生成长度较短,位数固定的散列值

常见的加密算法

  • 对称加密

-DES ,

-AES ,

  • 非对称加密

-RSA ,

-DSA ,

MD5完整性检验

-生成md5sum校验工具

-与软件官方提供的校验值比对

[root@proxy ~]# vim file1

abcdefg

[root@proxy ~]#md5sum file1

e1ce86726d2c8bea4f1398530b43b6f7  file1

使用GPG对称加密方式保护文件

[root@proxy ~]# yum -y install gnupg2   //安装Gnupg2软件包

[root@proxy ~]#gpg --version    //查看版本

GPG使用对称加密算法加密数据的操作

[root@proxy ~]# gpg -c fiel1

根据提示依次输入两次密码,如果在GNOME桌面环境,设置密码的交互界面会是下面的窗口程序

如果是在tty终端执行的上述加密操作,则提示界面也是文本方式的

根据提示输入两次口令,加密后的文件(自动添加后缀 .gpg)就生成了,传递过程中只要发送加密的文件(比如 file1.gpg)就可以了

gpg: 已创建目录‘/root/.gnupg’
gpg: 新的配置文件‘/root/.gnupg/gpg.conf’已建立
gpg: 警告:在‘/root/.gnupg/gpg.conf’里的选项于此次运行期间未被使用

gpg: 钥匙环‘/root/.gnupg/pubring.gpg’已建立

[root@proxy ~]# cat file1.gpg   //查看加密数据为乱码

��@�E�ջ��"��zj��Io'��>L,J����JI_��_�Yy}��>

使用GPG对加密文件进行解密操作

[root@proxy ~]# scp file1.gpg 192.168.4.100:/root  //把加密文件拷贝到客户机

[root@client ~]# gpg -d file1.gpg > file1  //解密后保存

gpg: CAST5 加密过的数据
gpg: 以 1 个密码加密
gpg: 警告:报文未受到完整的保护

[root@client ~]# cat file1

abcdefg                    //查看解密后的文件

使用GPG非对称加密方式保护文件

生成密钥对: gpg --gen-key

接收方UserA创建自己的公钥.私钥对

[root@clinet ~]# gpg --gen-key

  1. … …
  2. 请选择您要使用的密钥种类:
  3. (1) RSA and RSA (default)                            //默认算法为RSA
  4. (2) DSA and Elgamal
  5. (3) DSA (仅用于签名)
  6. (4) RSA (仅用于签名)
  7. 您的选择?                                             //直接回车默认(1)
  8. RSA 密钥长度应在 1024 位与 4096 位之间。
  9. 您想要用多大的密钥尺寸?(2048)                             //接受默认2048位
  10. 您所要求的密钥尺寸是 2048 位
  11. 请设定这把密钥的有效期限。
  12. 0 = 密钥永不过期
  13. <n> = 密钥在 n 天后过期
  14. <n>w = 密钥在 n 周后过期
  15. <n>m = 密钥在 n 月后过期
  16. <n>y = 密钥在 n 年后过期
  17. 密钥的有效期限是?(0)                                         //接受默认永不过期
  18. 密钥永远不会过期
  19. 以上正确吗?(y/n)y                                         //输入y确认
  20. You need a user ID to identify your key; the software constructs the user ID
  21. from the Real Name, Comment and Email Address in this form:
  22. "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
  23. 真实姓名:UserA
  24. 电子邮件地址:UserA@tarena.com
  25. 注释:UserA
  26. 您选定了这个用户标识:
  27. “UserA (UserA) <UserA@tarena.com>”
  28. 更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)?O         //输入大写O确认
  29. 您需要一个密码来保护您的私钥。
  30. 我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
  31. 鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。
  32. gpg: 正在检查信任度数据库
  33. gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
  34. gpg: 深度:0 有效性: 1 已签名: 0 信任度:0-,0q,0n,0m,0f,1u
  35. pub 2048R/421C9354 2017-08-16
  36. 密钥指纹 = 8A27 6FB5 1315 CEF8 D8A0 A65B F0C9 7DA6 421C 9354
  37. uid UserA (UserA) <UserA@tarena.com>
  38. sub 2048R/9FA3AD25 2017-08-16

列出公钥 ,查看公钥环 gpg --list-keys

列出所拥有的公钥:他们自己的公钥以及从与之通信的其他人那里导入的任何公钥

[root@client ~]# gpg --list-keys

/root/.gnupg/pubring.gpg
------------------------
pub   2048R/9A61D530 2018-05-15
uid                 UserA (UserA) <UserA@tarena.com>
sub   2048R/03489C24 2018-05-15

[root@client ~]# gpg -a --exprot UserA > /tmp/UserA.pub  /--exprot的作用是导出密钥 -a的作用是导出的密钥存储为ASCII格式

[root@client ~]# scp /tmp/UserA.pub 192.168.4.5:/tmp/ //将密钥传给UserB

使用GPG命令结合 --import选项导入发送方的公钥信息,以便在加密文件时指定对应的公钥

[root@proxy ~]# gpg --import /tmp/UserA.pub

gpg: 密钥 C9380AC4:公钥“UserA (UserA) <UserA@tarena.com>”已导入
gpg: 合计被处理的数量:1

gpg:           已导入:1  (RSA: 1)

UserB使用导入的公钥加密数据,并把加密后的数据传给UserA

[root@proxy ~]# echo "I love NB" > haha.txt

[root@proxy ~]#gpg -e -r UserA haha.txt

gpg: BFD6B5F5:没有证据表明这把密钥真的属于它所声称的持有者

pub  2048R/BFD6B5F5 2018-05-15 UserA (UserA <UserA@tarena.com>
 主钥指纹: 9FBE 7A97 624F 8273 B4AC  636A 81EF F0AC C938 0AC4
 子钥指纹: 9A63 AD39 343C FE4A EBB4  B66E F2B6 8412 BFD6 B5F5

这把密钥并不一定属于用户标识声称的那个人。如果您真的知道自
己在做什么,您可以在下一个问题回答 yes。

无论如何还是使用这把密钥吗?(y/N)y

[root@proxy ~]# scp haha.txt.gpg 192.168.4.100:/root   //加密的数据传给UserA

[root@client ~]# gpg -d haha.txt.gpg > love.txt

您需要输入密码,才能解开这个用户的私钥:“UserA(UserA) <UserA@tarena.com>”
2048 位的 RSA 密钥,钥匙号 BFD6B5F5,建立于 2018-05-15 (主钥匙号 C9380AC4)

gpg: 由 2048 位的 RSA 密钥加密,钥匙号为 BFD6B5F5、生成于 2018-05-15
      “UserA (UserA) <UserA@tarena.com>”
[root@client ~]# cat love.txt   //获得解密后的文件内容

I love you

[root@client ~]# ls /root/.gnupg  //产生的密钥放在这个文件里面

[root@client ~]# rm -rf .gnupg/    //删除密钥

[root@client ~]# reset            //如果终端不能用了,就执行reset重置

GPG签名和认证:签名的目的,主要时确保来源的数据正确

使用GPG的签名机制,检查数据来源的正确性。使用私钥签名的文件,是可以使用对应的公钥验证签名的,只要验证成功,则说明这个文件一定是出自对应的私钥签名,除非私钥被盗,否则一定能证明这个文件来自于某个人!

[root@client ~]# tar zcf log.tar  /var/log    //建立测试软件包

[root@client ~]# gpg -b log.tar            //创建分离式数字签名

[root@client ~]# ls -lh log.tar*UserA.pub

-rw-r--r--. 1 root root 914K 5月  15 14:42 log.tar
-rw-r--r--. 1 root root  287 5月  15 14:43 log.tar.sig

[root@client ~]# gpg -a --export UserA > /tmp/UserA.pub //把公钥导出

[root@client ~]# scp /tmp/UserA.pub 192.168.4.5:/tmp/

[root@client ~]# scp log.tar* 192.168.4.5:/root    /将签名文件与签名传给UserB
log.tar                                       100%  914KB 130.9MB/s   00:00    
log.tar.sig                                   100%  287   683.8KB/s   00:00

[root@proxy ~]# gpg --import /tmp/xxxxx.pub //导入公钥

[root@proxy ~]# gpg --verify log.tar.sig log.tar  在proxy上验证签名

gpg: 于 2018年05月15日 星期二 14时43分28秒 CST 创建的签名,使用 RSA,钥匙号 C9380AC4
gpg: 完好的签名,来自于“UserA (UserA) <UserA@tarena.com>”
gpg: 警告:这把密钥未经受信任的签名认证!
gpg:       没有证据表明这个签名属于它所声称的持有者。
主钥指纹: 9FBE 7A97 624F 8273 B4AC  636A 81EF F0AC C938 0AC4

r

linux 下的加密和解密详解相关推荐

  1. 加密、解密详解及CA的实现

    加密.解密详解及CA的实现 推荐 转载nmshuishui的文章,文章链接 http://blog.51cto.com/nmshuishui/1370917?utm_source=tuicool&am ...

  2. JavaScript实现加密与解密详解

    这篇文章介绍了Java脚本语言实现加密与解密详解的方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 目前原生射流研究-貌似并没有提供讯息摘要5计算相 ...

  3. Linux下Nginx编译安装过程详解

    Linux下Nginx编译安装过程详解 一.Nginx介绍 二.Nginx源码下载 1.打开Nginx官网 2.下载官网的源码包 三.Nginx源码安装 1.解压源码包 2.安装开发包组及环境 3.编 ...

  4. Linux下的samba服务配置详解

    Linux下的samba服务配置详解 一.Samba介绍 二.Samba工具及特性 三.搭建环境介绍 四.Samba配置步骤 1.服务端操作 2.在客户端操作 五.测试用户的权限情况 一.Samba介 ...

  5. C#实现RSA加密和解密详解

    C#实现RSA加密和解密详解 原文:C#实现RSA加密和解密详解 RSA加密解密源码: using System; using System.Collections.Generic; using Sy ...

  6. Linux下fdisk命令操作磁盘详解--添加、删除、转换分区

    linux下fdisk命令操作磁盘详解--添加.删除.转换分区等 fdisk 操作硬盘的命令格式如下: [root@localhost beinan]# fdisk 设备 比如我们通过 fdisk - ...

  7. 【Linux开发】Linux下jpeglib库的安装详解

    Linux下jpeglib库的安装详解 首先要下载所需的库压缩包:jpegsrc.v6b.tar.gz或 jpegsrc.v8b.tar.gz 然后将下载的压缩包随便放在和解压到你喜欢的地方. # t ...

  8. Linux下暴力破解工具Hydra详解

    Linux下暴力破解工具Hydra详解 一.简介 Number one of the biggest security holes are passwords, as every password s ...

  9. Linux 下 TC 命令原理及详解<一>

    文章目录 1 前言 2 相关概念 3 使用TC 4 创建HTB队列 5 为根队列创建相应的类别 6 为各个类别设置过滤器 7 复杂的实例 Linux 下 TC 命令原理及详解<一> Lin ...

最新文章

  1. runtime自动归档/解档
  2. 后退N帧协议中的滑动窗口
  3. java中servlet filter_lua学习笔记(二)仿java servlet中Filter功能
  4. myeclipse设置
  5. Boost:使用find_if()算法来检测两个向量交叉的点
  6. Windows窗口样式
  7. .Net培训个人总结笔记26
  8. PHP学习笔记03:简单网上调查站点
  9. c语言栈的实现以及操作_python模拟栈的操作实现非递归方式的快速排序算法
  10. log4net用法实例
  11. ps怎么把模糊的图片变清楚
  12. 实现生成木马的自动变异
  13. Java Web从入门到实战
  14. 解决微信浏览器video标签自动播放视频失效
  15. 现代密码学期末复习26问
  16. C语言:输入两个数字,将其按从小到大输出!
  17. MathType编辑半直积符号的步骤
  18. 多语种翻译器,中英文互译翻译器
  19. TI AM5718的PRU开发详解
  20. 继电保护计算机化,继电保护装置技术的发展

热门文章

  1. mysql aced是什么_memcached编译安装及缓存mysql测试
  2. 怎么靠网络的正常渠道赚钱?
  3. 自学就能轻松学会搭建网站的步骤教程
  4. VMware虚拟机安装win10系统教程(巨细)
  5. 分段函数sgnx的C语言程序,几个重要的分段函数
  6. mysql是一个大型数据库_MySQL是一个大型关系型数据库管理系统(RDBMS)。
  7. 手机浏览器点击input放大问题
  8. 左手拿叉右手拿刀——话西餐
  9. linux终端加密,在Linux系统上安装和使用VeraCrypt加密的方法
  10. xc7z030有多少个quad_XC7Z030-2FBG676I;XCZ7030-2FFG676I ZYNQ7系列专营