我正在尝试使用speakeasy https://www.npmjs.com/package/speakeasy在express js中生成动态口令。
下面是我尝试过的示例代码
var speakeasy = require('speakeasy');
var secret = speakeasy.generateSecret({length:32});
//generate token
var code = speakeasy.totp({
secret:secret.base32,
encoding: 'base32',
step:300,
window:100,
counter:123
});
//verify token
var verified = speakeasy.totp.verify({
secret:secret.base32 ,
encoding: 'base32',
token: code
});
验证令牌时,console.log(verified)
始终返回false。
我关注了这个github链接https://github.com/speakeasyjs/speakeasy/issues/52,但它没有帮助
发布于 2017-04-12 19:12:24
我不知道speakeasy
,但是我们已经在我们的项目中成功地使用了notp
来生成我们在Express中使用的一次性密码,也许这可能会有帮助:https://www.npmjs.com/package/notp
发布于 2020-04-08 13:57:53
添加为验证生成令牌时给定的step
值。
var verified = speakeasy.totp.verify({
secret:secret.base32 ,
encoding: 'base32',
token: code,
step: 300
});
发布于 2020-04-21 18:05:38
您应该将counter = 123
添加到verify函数中:
var verified = speakeasy.totp.verify({
secret: secret.base32,
encoding: 'base32',
token: code,
counter: 123
});
https://stackoverflow.com/questions/43367748
复制相似问题