Java 服务器端手机验证码sdk
2024-10-14 21:47:40
感谢巨人们,站在巨人的肩膀上.
参考: 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
最新文章
- ComboBox,三级联动菜单,新入门点小白,有些代码有待优化,大神勿喷
- 编译CM13源码添加来去电归属地 SudaMod开源项目,查看commit提交记录
- Graphics2D字符串根据文本框缩小字体自动换行
- CRC16 三种算法及c实现
- Uva 11542 乘积是平方数
- Quartus ii 12.0 和ModelSim 10.1 SE安装及连接
- Autofac.Configuration 3.3.0不稳定
- 谈谈Git的忽略规则.gitignore
- 使用JS构建简单Map(转)
- WPF编程学习——布局
- 浏览器以外的Javascript
- Sqlserver通过链接服务器访问Oracle的解决办法
- Java内部类的一些总结
- [Typescript] Function defination
- php制作数据字典
- SpringBoot热部署-解决方案
- Virtual Networking
- 移动端video标签默认置顶的解决方案
- LVS负载均衡集群(DR)
- vue-router那些事儿