RSA加密问题

前提:
1.后端使用一对固定的公私钥,登录时,将公钥发给前端,再用私钥解密前端发送的数据。
2.前端加密生成的字符串每次都是不一样的。

问题
前几次的加密结果依然可以登录系统!

这种情况怎么处理
每次用户请求的时候都重新生成公私钥?
或者其他更有好的方式?

阅读 3.8k
3 个回答
  1. 时间戳加入到加密序列当中,服务器接收时,判断时间戳。超出一定范围的,认为是非法数据。
  2. 将随机字段串加入到加密序列当中(比如40位随机字符串),接收随机字符串后,先判断是否在一定时间内已经使用过,使用过,则认为是非法数据。

首先,这样的加密是用来在传输过程中防止串改,抓包用的,更多的是用移动端和后端之间的加密解密。
其次,前端的信息基本都是公开的,你给前端发送一个公钥,难道我就不能获得这个公钥了吗?我一步一步的debug是不是也可以知道你加密的过程?所以,这个流程不应该放到前端。
三,登录这个流程你即便使用明文传输也没有多少风险,如果你真的怕了,就用MD5加sign的方式验证,传到后端的是用户名,密码,时间戳,还有就是sign,sign的值是MD5(盐+时间戳+密码+用户名)

前端传递时间戳的方式不行,前端和后端时间并不统一。

其实有点类似于jwt和session的问题讨论了。

jwt可以使用access_token和refresh_token以及黑名单机制

其实还是推荐传统的session方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题