前后端数据交互加密
在前后端分离的项目中,往往需要传输一些敏感的信息,例如密码、金额等,签名验签算法只能保证数据不被篡改,但是却无法对数据进行保密,如果用户输入的密码明文传输,就会被网络中的节点截获,虽然大部分网络运营商并不会去截取网络传输的内容,但是不能排除用户连接的WiFi网络是不是钓鱼网络,所以在传输敏感信息的时候需要加密,本文就讨论如何安全的让客户端和服务器交换秘钥。
AES+RSA
简单介绍一下AES和RSA
AES
:对称加解密
,加密解密使用同一个秘钥
。RSA
:非对称加解密
,使用公钥加密
数据,只有对应的私钥
才能解密
,加密方和解密方各自保存秘钥对中的一个。
为什么前后端交互要结合AES和RSA
- 如果只用
AES
前端
要加密数据,就需要保存秘钥
,我们知道保存在前端
的东西都不是秘密,秘钥泄露
后,拿到秘钥
和加密后的数据,就可以解密,加密毫无意义。 - 如果只用
RSA
前端只保存秘钥
对中的一个,即使泄露
,也无法解密
数据,解决了AES
的问题。但是RSA
效率低,每次交互都进行加解密
,对性能
影响较大。
结合使用:
AES
加密数据,RSA
加密秘钥
。AES
的秘钥
动态生成,避免了前端
保存秘钥
导致泄露的可能,RSA
对秘钥
加密,保证秘钥
传输过程的安全。最终提交到后端的数据是:AES加密后的数据
+RSA加密后的秘钥
图例
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!