
RT ,最近项目中要用到,请各路大神不吝赐教
1 murmur May 5, 2016 大概就是保持服务器和手机时间近似同步吧 然后有一套算法去加密这个时间就可以了 |
2 liyvhg May 5, 2016 via Android 实际上是个 URL 的短链接。可能一部分校验在服务器一部分数据在 URL 里面吧。业余答复。 |
3 mio4kon May 5, 2016 会有几张保存在本地,所以没网也会有二维码 |
5 JiShuTui May 5, 2016 都是按格式生成 URL 然后 APP 去处理 URL |
6 simplesslife OP |
7 murmur May 5, 2016 @simplesslife 一个时间应该只会有一张图片 精确到半分钟或者一分钟就可以了 |
8 mkeith May 5, 2016 应该类似网银的"动态密码"那种原理吧 |
9 haitang May 6, 2016 via Android 查了下微信的付款二维码,是 18 位数字编号,感觉是预定的验证码,又顺手抓了下包,发现请求一个 tenpay 接口,返回的数据长度 1300+,根据长度看,如果是纯黑白图片,可能是一个二维码大小,就是说,二维码是服务器来生成的。 PS: 微信中,我的二维码功能,是由服务器生成的,不过这个二维码是美化过的,不确定本地是否有二维码生成模块 |
12 simplesslife OP @murmur 嗯,我看了一下,应该跟你说的差不多,就是生成的规则具体是怎样的,是把时间和用户信息合在一起 hash 还是别的方法。 |
13 murmur May 6, 2016 @simplesslife 具体参考魔兽世界的手机安全令牌 有开源版 只要把那个数字加大能凑出一幅图就够了 |
14 eirk2004 May 6, 2016 secret key + time stamp |
15 simplesslife OP |
16 731193550 Jun 6, 2016 你好,大神联系方式是什么?学习下 |
17 myshzzx May 6, 2017 猜想应该是这么生成的, 用户 id+key 得到一个数字串, 然后用支付宝公钥加密一下得到. key 应该是楼上说的 totp 算法生成的, 生成密钥在登录支付宝时从服务器获取即可. 服务端验证: 只需验证 key 是由当前用户的密钥生成即可. 这里有个安全漏洞: 生成 key 的密钥需要保存在本地, 一旦手机被 root, 这个密钥可能泄露. |
18 youyaang Apr 9, 2019 [大雾] 干脆每次都传好几个给手机,定时联网刷新,刷新失败就用本地缓存(就是之前提前发过来的),就是现在是 abc,30 秒后换成 abd (本地缓存),再 60 秒后 abe (本地缓存),手机时钟在短时间内怎么说也是可靠的吧(当然你也可以用时间戳 |