我尝试生成类似于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
这种区别是什么?我该如何解决?