首页 新闻 搜索 专区 学院

注册机的实现原理,滚动码的实现?求指点谢谢。

0
悬赏园豆:40 [已解决问题] 解决于 2017-11-19 11:26

现在客户要求做一个滚动码在手机端生成。每次输入到锁里面可以开锁。按客户意思是锁生成8位数。同事要要带上时间。年月日加起来就12位了。然后每次生成只能生成9位。确保每次输入后都能开锁。且对应的是这把锁的标识。怎么实现?

objnet的主页 objnet | 初学一级 | 园豆:156
提问于:2017-10-09 17:26
< >
分享
最佳答案
0

说清楚场景.锁和手机端是否都联网.

收获园豆:20
吴瑞祥 | 高人七级 |园豆:28831 | 2017-10-09 17:39

手机端只负责添加锁的标识。和每次随机生成8位数。不通信。好比注册码一样。断网也可以。客户的意思是生成的9位数包含了时间段和锁的标识。只是经过算法加密了。我想不到怎么加密使得8位数的锁标识和时间都在里面。且每次生成。对应的锁才有效开门

objnet | 园豆:156 (初学一级) | 2017-10-09 17:43

@objnet: 嗯。那就是楼下那个了。最简单的是

每次服务器端用 时间+锁id+加锁对应密码  hash得到一个8位数字。

锁也用时间+锁id+加锁对应密码看。看和输入是是否一样。

吴瑞祥 | 园豆:28831 (高人七级) | 2017-10-09 17:47

@吴瑞祥:O(∩_∩)O谢谢您的回复。我先尝试看看。

objnet | 园豆:156 (初学一级) | 2017-10-09 17:53
其他回答(2)
0

可以看看这个

根据时间生成手机令牌密码的原理是什么?

https://www.zhihu.com/question/22662236

----来自知乎

收获园豆:10
HaiLiangFeng | 园豆:228 (菜鸟二级) | 2017-10-09 17:40

谢谢回复。我看看。

支持(0) 反对(0) objnet | 园豆:156 (初学一级) | 2017-10-09 17:43
0

为什么非要加年月日 可以设定一个开始时间 然后时间通过这个开始时间计算出到当前时间经过的秒数或者毫秒数 这样可以保证至少三年时间 如果想长一点 可以转成16进制或者32进制 反正自己定义一个长进制 26个字母加10个数字 至少能表示36进制 这样八位数可能表示的秒数非常长 当然也可以用毫秒 总之一句话 算法问题 我这只是一个思路

收获园豆:10
我丫的是条鱼 | 园豆:240 (菜鸟二级) | 2017-10-10 11:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册