Flutter动态验证码TOTP和HOTP方法

1. 前言

otp_util是一个package,用于生成和验证一次性密码,用于在App应用程序和其他需要登录的系统中实现2FA和MFA身份验证方法。

该插件基于RFC6238(TOTP:基于时间的一次性密码算法)和 RFC4226(HOTP:基于HMAC的一次性密码算法)。

2.功能

  • 创建并验证TOTP对象
  • 创建并验证HOTP对象
  • 使用b32编码的字符串生成一个otpauth url
  • 支持使用SHA1、SHA256、SHA384和SHA512加密的OTP令牌

3.安装

dependencies:
 otp_util: ^1.0.2

点击pub.dev查看。

4.示例

基于时间的OTP

import 'package:dart_otp/dart_otp.dart';

void main() {

 /// default initialization for intervals of 30 seconds and 6 digit tokens
 TOTP totp = TOTP(secret: "BASE32ENCODEDSECRET");

 /// initialization for custom interval and digit values
 TOTP totp = TOTP(secret: "BASE32ENCODEDSECRET", interval: 60, digits: 8);

 totp.now(); /// => 745872

 /// verify for the current time
 totp.verify(otp: '745872'); /// => true

 /// verify after 30s
 totp.verify(otp: '745872'); /// => false
}

基于计数器的OTP

import 'package:dart_otp/dart_otp.dart';

void main() {

 /// default initialization for intervals of 30 seconds and 6 digit tokens
 HOTP hotp = HOTP(secret: "BASE32ENCODEDSECRET");

 /// initialization for custom counter and digit value
 HOTP hotp = HOTP(secret: "BASE32ENCODEDSECRET", counter: 50, digits: 8);

 hotp.at(counter: 0); /// => 145089
 hotp.at(counter: 1); /// => 899133
 hotp.at(counter: 2438); /// => 146071

 /// verify with a counter
 hotp.verify(otp: '397732', counter: 2438); /// => true
 hotp.verify(otp: '397732', counter: 2438); /// => false
}

5.Demo

git地址:otp_util

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容