仿照https原理 使用rsa aes混合加密 前后端分离下,接口传输的安全,数据加密。

20 篇文章 0 订阅
1 篇文章 0 订阅

为什么需要加密

前后端分离之后,页面独立,接口单独返回所需数据,某些开放接口,比如登录,无登录视频播放,评论,多媒体资源等,很容易被第三方调用,爬虫获取。鉴权的接口也有可能正常用户调用接口修改个人某些数据。

https不是加密过了吗,怎么还加密?

抓个包看,浏览器控制台请求参数仍然是明文,https加密是在应用层和传输层之间,应用层就是浏览器客户端,请求发出之后帮你加密,到传输层的时候是安全的。但是浏览器客户端这里仍然能看见,并不安全。

为什么要混合加密?直接用rsa非对称加密不就行了吗

rsa加密内容长度不能过长,我们请求的参数可能会非常的长,aes对称加密速度快,长度长,很适合用来加密请求返回参数。

了解https原理

很容易看出来,服务端保存rsa私钥,客户端保存rsa公钥,客户端生成随机的key并用rsa公钥加密传递给服务端,这样服务端就能通过rsa私钥解密知道客户端的key。后续即可用这个key进行加密传输。
在这里插入图片描述

模拟https 用rsa和aes混合加密

和上图原理一样,只是在生成随机key的时候,每次都随机生成一个aes。后续前后端用aes进行加密解密。
在这里插入图片描述

其他问题。

Q1:前端代码暴露,用户直接断点调试找到对应代码就能知道请求参数是什么了。

前端代码压缩,加密,混淆。

Q2:前端代码暴露,调试直接能知道这次传递的aes是什么,直接解密。

确实,但是每次请求aes都是新生成的,前端代码加密混淆压缩后,也很难知道生成aes的逻辑。所以即使能知道这次传递的数据是什么,但是也无法进行伪造和爬虫解密破解资源。

防不胜防

网络安全是个大问题,并不是上述那么简单就能完全避免的。但是能增加破解难度。当你的价值不值得别人花费功夫去破解的时候,就自然会放弃。但是就有人要费事搞你。。。那能怎么办嘛。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当然可以!下面是一个使用RSAAES混合加密的示例代码: ```python from Crypto.Cipher import AES, PKCS1_OAEP from Crypto.PublicKey import RSA from Crypto.Random import get_random_bytes # 生成RSA密钥对 key = RSA.generate(2048) private_key = key.export_key() public_key = key.publickey().export_key() # 加密数据 data = b'This is a secret message.' # 使用AES生成随机密钥 session_key = get_random_bytes(16) # 使用RSA公钥加密AES密钥 rsa_cipher = PKCS1_OAEP.new(RSA.import_key(public_key)) encrypted_session_key = rsa_cipher.encrypt(session_key) # 使用AES加密数据 aes_cipher = AES.new(session_key, AES.MODE_EAX) ciphertext, tag = aes_cipher.encrypt_and_digest(data) # 传输加密后的数据和密钥... # 接收方解密数据 # 使用RSA私钥解密AES密钥 rsa_cipher = PKCS1_OAEP.new(RSA.import_key(private_key)) session_key = rsa_cipher.decrypt(encrypted_session_key) # 使用AES解密数据 aes_cipher = AES.new(session_key, AES.MODE_EAX) decrypted_data = aes_cipher.decrypt_and_verify(ciphertext, tag) print(decrypted_data.decode()) ``` 在这个示例中,首先生成了一个RSA密钥对。然后,生成了一个随机的AES密钥,并使用RSA公钥加密了该密钥。接下来,使用AES密钥对要加密数据进行加密,并生成了一个认证标签。最后,发送加密后的数据加密AES密钥给接收方。 接收方使用RSA私钥解密接收到的AES密钥,并使用解密后的AES密钥解密数据,并进行认证。 请注意,这只是一个简单的示例代码,用于演示RSAAES混合加密的基本概念。在实际应用中,需要更多的安全措施和错误处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值