生成类似于authy桌面的otp代码

时间:2019-06-27 15:21:58

标签: go

我尝试生成类似于authy桌面应用程序的otp代码,我编写了此代码:

package main

import (
    "github.com/pquerna/otp/totp"

    "bufio"
    "fmt"
    "time"
    "os"
)

var SecretCode string = "X7L245V2F2HZ3AYSSZMM35QNRMFPAMLP"


func promptForPasscode() string {
    reader := bufio.NewReader(os.Stdin)
    fmt.Print("Enter Passcode: ")
    text, _ := reader.ReadString('\n')
    return text
}


//AskCode -- ast code to use if is autorizated to use this application
func AskCode() {
    fmt.Println("Validation TOTP...")
    passcode := promptForPasscode()
    valid := totp.Validate(passcode, SecretCode)
    if !valid {
        println("Invalid OTP passcode!")
        os.Exit(1)
    } else {
        println("OTP Valid")
    }
}


// SayOTP --
func SayOTP() {

    code, _ := totp.GenerateCode(SecretCode, time.Now().UTC())
    fmt.Printf("OTP Code : %s\n", code)
}


func main(){
    SayOTP()
    AskCode()
}

代码正在工作,问题是我需要等待30秒才能使用代码,因为代码是在30秒后生成的。

这里有一个小视频示例:https://www.dropbox.com/s/cq6u888yqy29f1r/otp-problem.mp4?dl=0

这种区别是什么?我该如何解决?

0 个答案:

没有答案