OTP的概念与时间限制

时间:2013-07-18 05:03:03

标签: java time calendar otp

计划A:

哈希(用户名,密码和nowtime())

* nowtime()定义为:

Calendar cal = Calendar.getInstance();
cal.getTime()

计划B:

哈希(用户名,密码和nowtime())

*程序B执行循环(最多15秒),每个nowtime()定义为:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.SECOND, -1);

虽然来自两个程序匹配的时间,但是从相同的散列函数生成的OTP是不同的。我不需要代码,请帮我理解2个程序之间的同步时间。

1 个答案:

答案 0 :(得分:0)

Calendar.getTime()以1毫秒的分辨率返回时间。因此,两台计算机上的毫秒值肯定会有所不同(或者只是纯粹的运气,它们只是相同的。)

要使用您的解决方案,您必须在处理之前将毫秒设置为0

cal.set(Calendar.MILLISECOND, 0);

然后你应该至少有一场比赛。