前后端数据交互安全

原因:因为http是无状态协议, 信息传输是明文, 这会产生一个问题,那就是数据的安全, 如何防止数据被恶意截取修改等等
为了解决这个安全问题, 就有了数据加密

hash加密:MD5,SHA256

MD5和SHA256算法具有以下特点:

压缩性:任意长度的数据或者是任意大小的文件,算出的值的长度是固定的。
抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。
强抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

两者的区别:

MD5值长度都是32位的十六进制数,SHA256值长度是64位的十六进制数,因而SHA256安全性更高一些。
MD5计算速度快,SHA256相对较慢

对称加密:AES,DES

对称加密是最快速、最简单的一种加密方式,加密(encryption)与解密(decryption)用的是同样的密钥(secret key)。对称加密有很多种算法,由于它效率很高,所以被广泛使用在很多加密协议的核心当中。
对称加密通常使用的是相对较小的密钥,一般小于256 bit。因为密钥越大,加密越强,但加密与解密的过程越慢。如果你只用1 bit来做这个密钥,那黑客们可以先试着用0来解密,不行的话就再用1解;但如果你的密钥有1 MB大,黑客们可能永远也无法破解,但加密和解密的过程要花费很长的时间。密钥的大小既要照顾到安全性,也要照顾到效率,是一个trade-off。
缺点:用户将密码发给服务端时,密码被攻击方用非常规手段截取了,那攻击方就可以轻松获取到用户信息,这就不能做到保密的目的,在用户私人信息经常被泄密的时代,对称加密方式的缺点显得越来越突出。

非对称加密:RSA,DSA

非对称加密会产生两个东西,公钥(public key)和私钥(private key),公钥是由私钥生成的,公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。
虽然非对称加密很安全,但是和对称加密比起来,它非常的慢,所以我们还是要用对称加密来传送消息,但对称加密所使用的密钥我们可以通过非对称加密的方式发送出去。为了解释这个过程,请看下面的例子:

(1) Alice需要在银行的网站做一笔交易,她的浏览器首先生成了一个随机数作为对称密钥。
(2) Alice的浏览器向银行的网站请求公钥。
(3) 银行将公钥发送给Alice。
(4) Alice的浏览器使用银行的公钥将自己的对称密钥加密。
(5) Alice的浏览器将加密后的对称密钥发送给银行。
(6) 银行使用私钥解密得到Alice浏览器的对称密钥。
(7) Alice与银行可以使用对称密钥来对沟通的内容进行加密与解密了。

关于对称和非对称加密的总结

对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。

你可能感兴趣的:(前后端数据交互安全)