作者:于英豪H | 来源:互联网 | 2023-10-13 19:06
篇首语:本文由编程笔记#小编为大家整理,主要介绍了golang google authenticator totp代码相关的知识,希望对你有一定的参考价值。
func genTOTP(secret string) string {
key := make([]byte, base32.StdEncoding.DecodedLen(len(secret)))
base32.StdEncoding.Decode(key, []byte(secret))
message := make([]byte, 8)
binary.BigEndian.PutUint64(message, uint64(time.Now().Unix()/30))
hmacsha1 := hmac.New(sha1.New, key)
hmacsha1.Write(message)
hash := hmacsha1.Sum([]byte{})
offset := hash[len(hash)-1] & 0xF
truncatedHash := hash[offset : offset+4]
return fmt.Sprintf("%06d", (binary.BigEndian.Uint32(truncatedHash)&0x7FFFFFFF)%1000000)
}