各类加密算法介绍
目前常用的加密算法主要有:哈希算法(比如MD5、SHA族、Hmac),对称加密算法(比如AES),非对称加密算法(RSA),以及Diffie-Hellman密钥协商算法等等,这几种算法都有各自的特点,适合的场景也不一样,这里只做简单的介绍,想详细了解的话,网上资料很多,可以自行查看相关的资料。
各类算法的特点:
哈希算法:正向快速,不可逆性,即加密后是很难解密出明文的。经常用于数据加密和数据校验。
对称加密算法:AES是一种常用的对称加密算法,其特点是加解密都用同一个密钥。
非对称加密算法RSA:RSA算法是一种非对称加密算法,由一个私钥和一个公钥构成的密钥对,通过私钥加密,公钥解密,或者通过公钥加密,私钥解密。其中,公钥可以公开,私钥必须保密。
Diffie-Hellman密钥协商算法:Diffie-Hellman是一种密钥协商算法(简称DH算法),DH算法基于一种数学原理,能够在双方不泄露密钥的情况下协商出一种密钥来。
场景描述
在客户端向服务器端发送数据的过程中,如果是比较重要的数据(比如密码,敏感数据等),一般需要先在客户端进行加密后再发送,服务器接收到数据后再进行解密得到原始数据。(反过来服务器返回数据给客户端也是一样的道理)
这里假设客户端和服务器端采用AES(对称加密算法)进行加解密传输的数据,AES加密算法有一个特点就是加解密都用同一个密钥(这里把该密钥称作secretKey),所以双方都通过secretKey进行数据加解密。
因此在客户端向服务器第一次传输数据的时候,客户端需要先向服务器端获取secretKey,并且保存在客户端,而这种直接向服务器获取明文secretKey的过程是很容易被第三者拦截的,也就是说这一过程是不安全的。(哈哈,除非是服务器把secretKey写到纸上,亲手偷偷地递给客户端)
因此呢,客户端向服务器获取secretKey的这一过程,也是需要进行加密的。
那么,服务器需要怎么做才能把secretKey安全的送达客户端呢?
目前常