加密算法

一、解决什么问题

用明文的方式在网络上通信是不安全的,容易被别人偷窥,不安全。如果消息加密之后再传输那么安全系数肯定比明文要高得多。

二、加密算法

1、单向加密

原理:用公开的算法对数据单向加密,不能解密,用于验证数据完整性

常见算法:MD5、SHA1、HMAC

2、对称加密算法

原理:密钥是保密的,只有通信双方知道,加密解密使用同一个密钥,加密解密算法是公开的,这样生成的密文别人是无法理解的。

缺陷:密钥无法保证安全的发送给对方,可能被窃取。

常见算法:AES、DES、3DES

3、非对称加密算法

原理:通信的双方各有一对密钥,一个是私钥(保密的),一个是公钥(公开的)。用私钥加密的数据,只有对应的公钥才能解密;用公钥加密的数据,也只有私钥可以解密。

缺陷:加解密速度比对称加密慢百倍

常见算法:RSA、DSA、

4、非对称加密+对称加密算法

原理:结合对称加密算法速度快的优点和非对称加密算法可以保证密钥安全传输的特点,采用非对称加密算法传输对称加密算法的密钥,之后通信采用对称加密算法进行传输。

缺陷:非对称加密算法传输公钥的环节可能被中间人劫持,将自己的公钥发给通信双方,中间人就可以解密偷窥双方的通信。

5、认证中心(CA)+数字签名

原理:认证中心给每个用户颁发一个证书,用于证明身份,证书里边包含了用户的基本信息和公钥,为了保证证书的安全传输,防止被篡改,首先对用户的基本信息和公钥用hash算法生成一个消息摘要,只要传输过程中被篡改,消息摘要会发生变化,保证数据完整性,但是中间人仍然可以同时篡改原始消息和消息摘要,仅仅是这样就无法辨别了,办法是让认证中心(CA)用私钥对生成的消息摘要进行加密,生成签名,将原始信息和签名合并为数字证书一起发送,当对方接收到时,用同样的hash算法对原始数据生成一个消息摘要,再用CA的公钥对签名进行解密,得到传输过来的消息摘要,两个消息摘要一样就没有被篡改。

你可能感兴趣的:(加密算法)