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

你可能感兴趣的:(Flutter动态验证码TOTP和HOTP方法)