加解密算法分析

1、概述:

    加密算法是指,发送者对明文进行加密而后生成密文,接受者再对密文解密获得明文的过程。html

一、加密与签名区别

    最大的区别是,加密是可逆的,而签名是不可逆的。好比对于明文"Hello world"进行加密后获得结果R,还可使用密钥经过结果R解密获得"Hello world",而对"Hello world"进行签名获得结果R,却不能使用密钥经过R获"Hello world",试想若是几十个字符就能够存储存储几G的数据,那压缩算法要被完全颠覆了。算法

二、加密与签名的使用场景

    加密是对数据进行机密性保护,签名主要用于身份验证。好比A对B发送了信息Message;经过加密后,即使C经过网络包截取得到了Message,它也不知道里面的具体内容,只能看到一堆乱码;经过签名,假设D也用相同的加密算法发送了此Message,可是签名错误,那么B经过签名依然拒绝D的Message。安全

2、算法分类

    在加密算法以外,为了解决秘钥的分发的问题,出现了:对称加密和非对称加密。最主要的就是密钥的不一样,对称加密客户端和服务端使用同一个密钥,非对称加密使用一对不一样的密钥。网络

一、散列(哈希)函数

  • 一般有MD五、SHA一、SHA25六、SHA512
  • 实质是抽取特征码,这样通常不会重复!是的,不一样的文本它的哈希结果是有可能相同的,但几率很小。
    (举例:好比想要识别一我的,咱们能够经过他的指纹来锁定他,指纹出现相同的几率很低吧!在这里,人就至关于数据,而指纹就至关于对人这个数据进行hash后获得的结果)
  • 对任意一个二进制数据进行哈希,能够获得定长的字符串结果,例如MD5哈希结果是128位,更可能是以32个字符的十六进制格式哈希输出
  • 还有就是不可逆的,既然是不可逆的,那么固然不是用来加密的,而是签名

二、对称加密

    对称加密指的就是加密和解密使用同一个秘钥,因此叫作对称加密。对称加密只有一个秘钥,做为私钥。 常见的对称加密算法:AES,DES,3DES等。目前用的最广发而且安全的算法是AES。函数

  • 加密和解密使用同一个秘钥,加密解密的速度快
  • 适合给大数据进行加密
  • 密钥的安全性很是重要

三、非对称加密

    非对称加密指的是:加密和解密使用不一样的秘钥,一把做为公开的公钥,另外一把做为私钥。公钥加密的信息,只有私钥才能解密。私钥加密的信息,只有公钥才能解密。 常见的非对称加密算法:RSA性能

  1. 使用 公钥 加密,使用 私钥 解密
  2. 使用 私钥 加密,使用 公钥 解密(私钥签名,公钥验签)
  3. 更安全,固然速度会慢下来,若是随着硬件的突破,使用愈来愈多,特别是支付

四、区别

    对称加密算法相比非对称加密算法来讲,加解密的效率要高得多。可是缺陷在于对于秘钥的管理上,以及在非安全信道中通信时,密钥交换的安全性不能保障。因此在实际的网络环境中,会将二者混合使用。大数据

五、实例

    在对B/S模型中,能够用以下方式进行数据的安全传输:
(1)、 服务端计算出一对秘钥pub/pri。将私钥保密,将公钥公开。 
(2)、客户端请求服务端时,拿到服务端的公钥pub。 
(3)、客户端经过AES计算出一个对称加密的秘钥X。 而后使用pub将X进行加密。 
(4)、客户端将加密后的密文发送给服务端。服务端经过pri解密得到X。 
(5)、而后两边的通信内容就经过对称密钥X以对称加密算法来加解密。加密

3、RSA算法分析:

    假设A、B双方均拥有一对公私钥(PUB_APRI_APUB_BPRI_B)。A向B发送Message的整个签名和加密的过程以下:spa

  1. A先使用HASH对Message生成一个固定长度的信息摘要Message_hash_A
  2. A使用A的私钥PRI_AMessage_hash_A进行签名获得Message_sign(这里为何不直接对Message进行签名,而要对Message_hash_A进行签名呢?由于Message的长度可能很长,而Message_hash_A的长度则是固定的,这样性能更高,格式也固定,何况hash的结果通常不会出现重复的可能)
  3. A接着使用B的公钥PUB_B对信息Message和信息Message_sign进行加密获得Message_RSA,这时A将Message_RSA发送给B。

当B接收到A的信息Message_RSA后,获取Message的步骤以下:code

  1. B用本身的私钥PRI_B解密获得明文:MessageMessage_sign
  2. 而后B使用A的公钥PUB_AMessage_sign获得Message_hash_A;同时,B再对Message使用与A相同的HASH获得Message_hash_B
  3. 若是Message_hash_AMessage_hash_B相同,则说明Message没有被篡改过。

参考文档:

http://www.cnblogs.com/mddblog/p/5380556.html

相关文章
相关标签/搜索