MinaOTP 是一款用来生成二步验证 token 的小程序,基于 RFC6238 实现,TOTP 算法由javascript
实现。
小程序会安全地实时计算动态二步验证 token,token 的增加
,编辑
,删除
也很方便。
小程序代码已在 Github 上开源。
jsotp
是一个用来生成用来生成及验证一次性密码的 js 模块,一次性密码通常用来在 web 应用或者其他登录系统中作为二步验证或多步验证使用。
该模块基于 RFC4226 ( HOTP:基于计数器的一次性密码算法)和 RFC6238( TOTP:基于时间的一次性密码算法)实现
npm install jsotp
全部模块支持:
let jsotp = require('jsotp');
// import
let jsotp = require('jsotp');
// Create TOTP object
let totp = jsotp.TOTP('BASE32ENCODEDSECRET');
totp.now(); // => 432143
// Verify for current time
totp.verify(432143); // => true
// Verify after 30s
totp.verify(432143); // => false
// import
let jsotp = require('jsotp');
// Create HOTP object
let hotp = jsotp.HOTP('BASE32ENCODEDSECRET');
hotp.at(0); // => 432143
hotp.at(1); // => 231434
hotp.at(2132); // => 242432
// Verify with a counter
hotp.verify(242432, 2132); // => true
hotp.verify(242432, 2133); // => false
// import
let jsotp = require('jsotp');
// Generate
let b32_secret = jsotp.Base32.random_gen();
1
sobigfish 2017-06-30 22:51:26 +08:00
👍,拿来自用 TOTP 不够安全,但可以融入企业网站应用什么的 2FA 用,那些普通用户估计也不会去下 Google Authenticator
|
2
lancegin OP @sobigfish 嗯, 结合下面的 jsotp module,从生成 token,到 2FA 的验证全流程都跑通了 ,,话说自用 TOTP 的不够安全是指哪方面呢
|
3
sobigfish 2017-06-30 23:12:27 +08:00
@lancegin #2 key(token) 现在是存在 wx.setStorage 里的?
虽然文档里写的是“ localStorage 是永久存储的” 但感觉对比独立的 app 而言容易掉 |
4
lancegin OP @sobigfish 确实,这就得看微信小程序具体设计了,,不过我在 todo 里写有一个自定义数据存储,就是为了解决这个问题,同时增加与用户同步的功能,这对于我个人是很有需求的🌝
|
5
sobigfish 2017-06-30 23:21:56 +08:00
用户同步就涉及到 key 的第三存储了
所以,我要备份的话首选系统级的同步备份比如 iCloud 了 |
8
wxsolo 2017-06-30 23:55:19 +08:00
这个对有需要,但使用频率不高的人实在太方便了
|
10
chroming 2017-07-01 14:09:17 +08:00 via iPhone
之前想用 Pythonista 写个,写好 demo 就懒得写了……
|