加密解密及openssl 详解

说到加密 必然的 把他分成两类: 

 1. 对称加密;

 2. 非对称加密:


这两种加密的方式分类是根据加密解密时是否用同一密钥来命名的, 对称加密比较成熟,非对称加密是比较新的一种加密方式,他们各有优缺点。   下面我们就具体的分析一下两种加密方式。


对称加密: 他的的加密过程如下图:



                       

这种加密算法很好但是有一个问题 我们的共同的 密钥KEY 如何获的呢? 

因此我们不得不讲一下 Key exchange 的的过程: 我们讲一种比较常见的 离散对数 密钥交换算法:

传输人A 和传输人B: p 大素数, g 生成数;

传输人A: x   传输人B:y

传输人A  RA=g^x%p ---> B

传输人B  RB=g^y%p --->A


密钥: g^xy%p


在网络上传输的 数字只有  大素数 p  生成数 g   和  RA , RB (注意这里的p 要比较大 加密才安全)

 以上就是一个 常用的 对称加密的密钥交换 方法(DH) 密钥交换:

主要的对称加密算法常用的有:

 1. DES(56Bit)

 2. 3DES(128Bit)

 3.  AES(128Bit)

 4. AES 192 AES 256 AES 512


对称加密的优缺点: 

1. 速度快,相对比较安全,加密比较紧凑 加密后文件不会太大。

2. 但是随着加密的用户的增多 密钥会很多 难以管理。不支持数字签名和数据完整性验证。(不能支持发数据的身份验证)


那么下面我们介绍一下非对称加密,看能不能解决这些问题:

加密过程如图:


非对称加密(公私钥加密) 的优缺点:

 1. 非常的安全。没有复杂的密钥分配问题。

 2. 单时他的加密非常的慢,并且数据会变得非常大。


主流的非对称加密方法有:

1. RSA  加密和签名

2. DSA 签名

3. EIGamal


非对称加密的用法:

1. 用自己的密钥加密 可以让对方验证自己的身份。

2. 用对方的公钥加密 可以加密数据。

由于非对称加密有速度慢 加密后数据变大的缺点一般没人单纯用它加密数据。


下面我们在介一种加密方式(单向加密算法)

单向加密或者收散列函数 主要的任务是验证数据的完整性,是不可逆的加密。 特点是:

1. 输入一样 输出必须相同。

2. 雪崩效应 输入微改 输出就巨该。

3. 定长输出,无论输入多长 输出都是定常。

4. 加密不可逆

主流的散列函数有:

Md4

Md5

SHA1 

SHA192 SHA256 SHA512

CRC 32


综上所述我们会得出一个比较可行的加密解密方案:

主管加密过程:


主管的加密过程:

1. 主管用散列函数计算要发给我的数据的 散列值(数字签名1) 

2.  主管用自己的私钥加密数子签名1 此时会得到加密的数字签名1和data 

3.  主管用随机生成的对称加密密钥加密已经加密的数字签名1和data ,此时只有主管能解密因此要吧 对称密钥传给我。

4. 主管用我的公钥加密随机生成的对称密钥, 此时会得到 我的公钥加密的随机对称密钥, 对称密钥加密的data和主管私钥加密的data的数字签名1



我接收到数据的解密过程:



           

我的解密过程:

1.  首先利用自己的私钥解密 随机生成的对称的密钥,得到对称的密钥

2.  用的到的对称的密钥 解密 data和加密的数字签名1

3.  用主管的公钥解密加密的数字签名1 得到数字签名1

4.   用散列函数计算得到的data的数字签名2

5.  比较数字签名1和数字签名2 是否一样。



整个过程看出比较完美。但是唯一的问题来了。整个工程都依赖于 主管的公钥,如果是黑客替换了主管的公钥就麻烦了。


所以我们就要找一个比较靠谱的第三方来验证主管的公钥:这就产生了CA 认证标准。


如图:



 

具体的详解:

1. Client 能在互联网上下载CA 的公钥。 用于验证Server的身份。

2. Server 通过加密算法生成一对密钥, 将公钥发给CA 认证机构 做数字证书。

3. CA 通过自己的私钥加密 server的公钥并加上自己的数字签名收将生成的数字证书发给server

4. client 和server 通过tcp 三次握手建立连接

5. client 发出http 报文请求 并和server 协商用哪一种加密算法。

6. server 响应报文并且 将公钥(CA 证书)发送给client

7. client 能通过CA的公钥解密CA证书 得到server的公钥和数字签名, client 通过散列函数计算server 公钥的数字签名 并与得到的相比较 来验证server。

8 验证成功 处理请求。

9. client 和server 四次挥手短链接。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值