感谢巨人们,站在巨人的肩膀上.

参考: http://blog.sina.com.cn/s/blog_80a6423d0102wm74.html#commonComment

1 点击生成验证码,发送到应用服务器,服务器随机生成6位验证码

private int puductCode(){
  return
  (int)((Math.random()*9+1)*100000);
}

2 根据 time, SECRET,code, phoneNum, 计算出一个token

   public static String generateToken(String secret, String param)throws Exception{
param = encodeUrl(param);
Mac mac = Mac.getInstance("HmacSHA1");
SecretKeySpec secretKey = new SecretKeySpec(secret.getBytes(CONTENT_CHARSET), mac.getAlgorithm());
mac.init(secretKey);
byte[] hash = mac.doFinal(param.getBytes(CONTENT_CHARSET));
String sig = new String(Base64Coder.encode(hash));
return sig;
}

3 将 token , 和 time返回给客户端

4 用户收到验证码, 填写验证码, 客户端讲验证码,token, time同时传回给服务器, 服务器用同样的方法进行验证, 并且判定时间是否过期.

服务器需要定期换SECRET.

这样做是为了服务器不存储code, 突然明白了SDK中为什么有那么多token

最新文章

  1. ComboBox,三级联动菜单,新入门点小白,有些代码有待优化,大神勿喷
  2. 编译CM13源码添加来去电归属地 SudaMod开源项目,查看commit提交记录
  3. Graphics2D字符串根据文本框缩小字体自动换行
  4. CRC16 三种算法及c实现
  5. Uva 11542 乘积是平方数
  6. Quartus ii 12.0 和ModelSim 10.1 SE安装及连接
  7. Autofac.Configuration 3.3.0不稳定
  8. 谈谈Git的忽略规则.gitignore
  9. 使用JS构建简单Map(转)
  10. WPF编程学习——布局
  11. 浏览器以外的Javascript
  12. Sqlserver通过链接服务器访问Oracle的解决办法
  13. Java内部类的一些总结
  14. [Typescript] Function defination
  15. php制作数据字典
  16. SpringBoot热部署-解决方案
  17. Virtual Networking
  18. 移动端video标签默认置顶的解决方案
  19. LVS负载均衡集群(DR)
  20. vue-router那些事儿

热门文章

  1. Java synchronized 详解
  2. 【C语言】字符串模块
  3. 【原】手写一个promise
  4. 分离JavaScript
  5. CreateMutex()参数报错问题
  6. js框架封装,模拟jQuery封装
  7. 移动端 web开发心得
  8. python从初识到精通1
  9. 第一百二十四节,JavaScriptCookie与存储
  10. HDOJ_就这么个烂题总是WA先放这把