首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RFC4226 HOTP实现

RFC4226 HOTP实现
EN

Stack Overflow用户
提问于 2015-05-22 08:35:58
回答 2查看 3.7K关注 0票数 14

我试图复制HOTPAlgorithm.java代码(HOTPAlgorithm.java),并将其与官方的HOTP 4226的示例实现(RFC4226第27页)进行比较,该示例实现在正式的RFC4226文档第27页中找到。HOTPAlgorithm.java和RFC4226中的实现都是由同一个作者编写的,作者是Loren,并设置为1.0版。从我的比较来看,这两种代码本质上是相同的。

我尝试为6位HOTP代码运行测试向量(而不修改HOTPAlgorithm.java脚本),并注意到RFC4226和HOTPAlgorithm.java中给出的源代码针对发布的具有完全相同设置的RFC4226结果产生不同的测试向量结果。

RFC4226示例Java代码和HOTPAlogrithm.java发布的Java代码与RFC4226测试向量相比是否存在差异?

HOTPAlgorithm.java和RFC4226代码的测试结果(两者产生相同的结果):

代码语言:javascript
复制
755224
030356
132975
957805
463120
994243
844697
570244
487336
025740

来自RFC4226发布的测试向量(RFC4226第32页)

代码语言:javascript
复制
755224
287082
359152
969429
338314
254676
287922
162583
399871
520489

我是不是遗漏了什么,或者官方公布的样本代码和官方公布的结果之间是否有差异?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-22 11:13:23

变化

代码语言:javascript
复制
int otp = binary % DIGITS_POWER[codeDigits];

代码语言:javascript
复制
int otp = (int) (binary % Math.pow(10, codeDigits));

代码语言:javascript
复制
int otp = binary % 1000000;
票数 7
EN

Stack Overflow用户

发布于 2016-08-31 14:39:35

对Math.pow()的更改没有起到任何作用,但我认为您可能是以0作为truncationOffset参数值调用generateOTP()。试着用-1给出参考测试向量。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30392008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档