今天项目 遇到一个事故,我本想用 一个形容这个事故的adj  算了 既然 叫事故 已经能表达我们处于的一种状态,

是这样的: 有小部分用户反应 app无法注册 总提示密码错误的情况 实际 该步骤 已经通过了本地校验密码的步骤.此时的密码错误反馈 是服务端返回的?

于是我们判断 密码解码 出了问题.

对于密码加密规则 真的是每个公司都有一套 很灵活. 我们由于是翻新版本 也出了新的一套密码加密规则,

如下:

登录加密方式

md5(md5(password))

这个登录加密比较好理解,针对原始密码 二次md5,  此时服务端在注册时候已经知道你的密码 也进行二次md5 再和你上传的password加密结果进行比较 即可

注册加密方式:

几个参数:

appKey :服务端提供的key,放在app本地。用于参与下面的加密

time  : 获得当前时间戳并保留变量,用于上传给服务端 (秒级别)

date:  将时间戳转为 “分:秒:时 日-月-年” 格式

password1: 截取用户输入密码的前m位,再进行字符串反转操作

password2: 用户输入密码的剩余字符,再进行字符串反转操作

code : md5(AppKey+date);

最终公式如下

passwrod=反转字符串(base64_encode (code+password1+code+password2+code))

NOTE: time 时间戳需要一起上传给服务端

其实 这里的关键问题 就是对 time 和 date的理解,

服务端希望加密结果是动态的,所以引入时间戳加密

然后通过上传的time  服务端再把结果反解密 得到原始密码

其实 说到这里 我们大家就都知道 为什么 用户反馈说无法注册了———服务端没有解密出原始密码!!!!

关键就是这个时间戳 出现了严重的问题.

设计该套加密过程,我们 前端和后端没有约定 这个时间戳到底以什么时区为标准!!!  客户端默认 是用户当地时区处理的

服务端解密 时候 把时间戳 按北京时区处理了,

恰巧 我们的确存在部分海外用户, 注册或者 重新找回密码 直接就失败了.

其实解决很简单

方法我们选择两种

(1)前端后端统一时区

(2)前端不动 后端要对 第一次解密过程判断 如果没有得到密码结果 要遍历其他时区继续解密 至解密成功

当前,为了App Store 用户即可用 我们采用了方法(2)

在接下来的迭代,遵循设计规则(1)

因为这个问题是在临近结束当前开发任务发现的么,我这边的个人想法是:

a 这个问题客户端马上可以配合修改,执行(1). 这样服务端就少维护一个错误版本 
b 其次考虑到,毕竟后端遍历处理 并发量是一个问题啊, 如此处理 很是鸡肋.
c 客户端处理并且仅仅处理注册这块的和加密相关的一个时间戳时区问题,对于其他功能代码 无逻辑业务功能关联,测试也就测这块, 属于可把控范围内

但是其他人的意见是: 
a 小范围 影响,仅仅是小部分海外用户  
b  临上线 改东西 影响大  不可预测
c 服务端 在用正常方法解不开时候才for循环

最终 我从众 (目前公司没有CTO 来做决策 所以 几个人讨论...)
这也是我成长路上遇到一个比较考验人的问题吧, 真的很考验人,一个错误不成熟的交互设计, 修改后 到底如何执行, 真的很考验领导者的应变能力和领导力.
解决方案很灵活, 具体事件具体探讨分析,不断成长锻炼,如果有一天 我作为管理者,我必须要有足够理由告诉,说服大家,这么做,是权益最大的一个方案. 
还是在成长中啊

转载于:https://www.cnblogs.com/someonelikeyou/p/6509324.html

iOS 注册密码加密 添加了时间戳 遇到的问题...相关推荐

  1. django的通过set_password注册密码加密

    django的通过set_password注册密码加密,解密 这个是因为我正好回顾时遇到这个问题,网上也找不到,试了很久终于解决出来 一.加密 1. 这个问题首先要用到django自带的Abstrac ...

  2. iOS登陆密码加密-HMAC

    原理:用一个密钥给密码加密,并经过两次散列,密钥来源于服务器,并且是一个账号对应一个密钥. 流程 1.客户端注册账号,将账号发送给服务器,服务器收到账号,判断未注册时,返回给客户端一个密钥(该密钥与该 ...

  3. 密码加密技术(MD5)

    1.MD5概念 md5的全称是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生一个128位(16字节,1字节8位)的散列值 ...

  4. Shiro自定义realm实现密码验证及登录、密码加密注册、修改密码的验证

    一:先从登录开始,直接看代码 @RequestMapping(value="dologin",method = {RequestMethod.GET, RequestMethod. ...

  5. 【SpringSSM项目】搏击俱乐部 使用邮箱进行登录注册 密码加盐加密

    在注册页面使用邮箱进行注册,注册后发送带有确认码的邮件到邮箱中,通过邮件确认注册 编写数据库 登录注册需要使用到用户表 table userinfo 包含 账号状态 用户名 邮箱 密码 头像 过期时间 ...

  6. SpringBoot集成Spring Security(二)注册 、密码加密、修改密码

    SpringBoot集成Spring Security(一)登录注销 写在前面 上一节创建了项目并且利用Spring Security完成了登录注销功能,这里继续说一下注册.密码加密和找回密码,代码注 ...

  7. 对于AES和RSA算法的结合使用以及MD5加盐注册登录时的密码加密

    RSA和AES结合使用 接上篇的RSA和AES算法加密之后,AES对称算法对数据量大的加密比较快,而RSA公私钥加密的话会影响加密效率,但是AES的加密与解密的密钥是一致的,导致密钥不能外泄,密钥在网 ...

  8. html5 密码加密,1、5 写注册的后台并写前台html密码加密id 随机

    1 public void save(Student student) { // TODO Auto-generated method stub student.setSid(UUID.randomU ...

  9. Edusoho修改注册的用户密码加密机制规则

    一.简介 1.修改生成$salt的机制规则. 2.修改生成$password的机制规则. 二.edusoho的默认用户密码加密机制规则 1.系统默认生成$salt的方式: edusoho\src\Bi ...

最新文章

  1. list extend 和 append
  2. Mockito cannot mock/spy because : - final class 问题
  3. -webkit-scrollbar
  4. 大牛书单 | 新年聊创新:技术人必备思维
  5. 20个非常好用的正则表达式
  6. Git 教程学习--第三篇
  7. c语言程序设计自学跟谁好,双辽c语言编程学习,双辽学c语言编程哪个好,双辽学c语言编程自学好还是报班好...
  8. 你身边有没有“万事不求人”的人?他们后来怎么样了?
  9. Json对象直接存取数据库
  10. 我的世界暮色森林java下载_我的世界暮色森林整合包
  11. 三大控制结构 js函数定义
  12. matlab画空间分布图,matlab空间图形的画法.doc
  13. Java微信公众平台开发之素材管理
  14. 从共享征信黑名单到建立白名单体系:LinkEye想打造基于区块链的征信联盟
  15. 【论文阅读】PerfectDou: Dominating DouDizhu with Perfect Information Distillation
  16. Linux---查看内存型号
  17. 利用python的matplotlib绘制分布图
  18. SAP FICO顾问入门
  19. 从游戏服务端角度分析移动同步(状态同步)
  20. 服务器导购:选购服务器应看哪些配置参数

热门文章

  1. C++ 继承过程中使用访问说明符和虚函数
  2. php 返回字符串给aja,解决ajax异步请求返回的是字符串问题
  3. mysql anyvalue报错_Mysql 的ANY_VALUE()函数和 ONLY_FULL_GROUP_BY 模式
  4. java字符串分割性能_String字符串性能优化的几种方案
  5. nginx 常用命令 和 配置
  6. OSError: Unable to download 'ffmpeg.win32.exe'. Perhaps there is a no internet connection? If there
  7. 报错解决:RequestsDependencyWarning: urllib3 (1.24.3) or chardet (3.0.4) doesn't match a supported versio
  8. 2020-09-20C++学习笔记之与C语言对比1
  9. 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
  10. cocos2d-x android 黑屏,cocos2d-x-3.8生成android 的apk后真机测试出现黑屏