zoukankan      html  css  js  c++  java
  • Java 服务器端手机验证码sdk

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

    参考: 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

  • 相关阅读:
    关于 js 下载PDF文件时
    vue3.0 学习
    iOS
    bootstrap treeview
    SVN版本管理
    js框架
    正则表达式
    如何让安卓手机在电脑上同步显示(MX4 Pro为例)
    mysql 中文乱码
    ADO.NET 数据库连接池大小
  • 原文地址:https://www.cnblogs.com/xiaozhuan/p/6278424.html
Copyright © 2011-2022 走看看