比如,https完全就是建立在证书可信的基础上的。如果遇到中间人伪造证书,一旦客户端通过验证,安全性顿时就没了! 平时各种钓鱼不可描述的网站,很可能就是黑客在诱导用户安装它们的伪造证书!通过伪造证书,https也是可能被抓包的哦。
既然使用了https协议传输用户密码,还是「不一定安全」,那么,我们就给用户密码「加密再传输」呗~
加密算法有「对称加密」和「非对称加密」两大类。用哪种类型的加密算法「靠谱」呢?
对称加密:加密和解密使用「相同密钥」的加密算法。
常用的对称加密算法主要有以下几种:
如果使用对称加密算法,需要考虑「密钥如何给到对方」,如果密钥还是网络传输给对方,传输过程,被中间人拿到的话,也是有风险的哦。
再考虑一下非对称加密算法呢?
「非对称加密:」非对称加密算法需要两个密钥(公开密钥和私有密钥)。 公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有对应的私钥才能解密。
常用的非对称加密算法主要有以下几种:
如果使用非对称加密算法,也需要考虑「密钥公钥如何给到对方」, 如果公钥还是网络传输给对方,传输过程,被中间人拿到的话,会有什么问题呢? 「他们是不是可以伪造公钥,把伪造的公钥给客户端, 然后,用自己的私钥等公钥加密的数据过来?」 大家可以思考下这个问题哈~
我们直接「登录一下百度」,抓下接口请求,验证一发大厂是怎么加密的。可以发现有获取公钥接口,如下:
再看下登录接口,发现就是RSA算法,RSA就是「非对称加密算法」。其实百度前端是用了JavaScript库「jsencrypt」,在github的star还挺多的。
因此,我们可以用「https + 非对称加密算法(如RSA)」 传输用户密码~