1. 前后端交互数据加解密
本文提供了一种前后端交互数据的加解密方法,主要涉及了AES和RSA两种加密方式。
AES加密是一种对称式加密,即加密和解密所需秘钥是相同的。后端生成一组秘钥,并利用该秘钥加密数据,然后发给前端,同时也需要把秘钥发送给前端,这样前端才能解密。这样就会有风险,一旦秘钥被泄露,你的加密将不存在任何意义。同时,相比RSA加密来说,好处是不会限制加密字符串的长度。
RSA加密,是一种非对称式加密,相比AES加密,这个就安全多了。后端生成一对秘钥,自己拿着私钥,公钥可以公开。这样前端拿公钥进行加密,后端拿私钥进行解密,私钥掌握在自己手里,被泄露的风险就小了很多。当然也有不好的地方,就是被加密字符串的长度不能过长,1024的秘钥只能加密117字节以内的明文,这就比较尴尬了,可能稍微长一点的数据就会超出了,当然可以通过2048或者4096的秘钥来延长加密长度,但总会被超出。所以适合需要加密长度不长的数据,最好是已知长度的数据,这样 就不会因长度问题报错。
RSA+AES混合加密,即后端通过RSA算法生成一对公私钥,并把公钥提供给前端。前端通过AES算法生成密钥,利用公钥进行加密并送给后端,后端根据私钥进行解密,得到与前端相同的AES密钥。然后,前后端就可以利用AES密钥对称加密进行数据交互。
详细步骤如图所示。
RSA+AES混合加密,结合了两种加密方式的优点。另外,前端每次启动都会随机生成AES密钥,后端增加token失效机制(前端设置了定时任务请求token),增加了前后端数据交互的安全性。
https://www.cnblogs.com/huanzi-qch/p/10913636.html
https://blog.csdn.net/weixin_38342534/article/details/94582656
2. python rsa模块---生成公钥和私钥的方法
https://blog.csdn.net/six66hao/article/details/81814576
https://blog.csdn.net/whatday/article/details/97617461
https://blog.csdn.net/xiongzaiabc/article/details/88400748
https://blog.csdn.net/zhao3587717/article/details/83111082/
一.
非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
对称加密算法大家共渣岁用一个密钥
数字签名: 就是为了证明该信件是确定的人发出的,而不是黑客冒充发出的
eg:
1.鲍勃给苏珊回信,决定采用"数字签名"。他写完后先用Hash函数,生成信件的摘要(digest)。
二.用RSA库可以生成公钥和私改梁盯钥
到时候把公钥给前端,后端保存公钥和私钥
三.在用户注册/登入时,输入密码后前端会用JS对密码进行加密传送到后端
一般现在对于密码的加密解密都核和用RSA进行