github位址
將下面key替換成google二次認證時的key。檔名 google_authenticator.go
go build google_authenticator.go
會生成乙個可執行檔案google_authenticator
3. 可以重新命名一下簡單方便的名字,然後配置環境變數到這個目錄下,或者移動檔案到可執行的環境目錄下
4. 可以在任何地方輸入goo*** +tab自動補全,然後回車
package main
import (
"crypto/hmac"
"crypto/sha1"
"encoding/base32"
"encoding/binary"
"fmt"
"time"
)var key = "j3uys**n6pdaauhq1g49"
func main()
// makegoogleauthenticator 獲取key&t對應的驗證碼
// key 秘鑰
// t 2023年的秒
func makegoogleauthenticator(key string, t int64) (string, error)
snum := lastbit4byte(hs)
d := snum % 1000000
return fmt.sprintf("%06d", d), nil
}// makegoogleauthenticatorfornow 獲取key對應的驗證碼
func makegoogleauthenticatorfornow(key string) (string, error)
func lastbit4byte(hmacsha1 byte) int32
offsetbits := int8(hmacsha1[len(hmacsha1)-1]) & 0x0f
p := (int32(hmacsha1[offsetbits]) << 24) | (int32(hmacsha1[offsetbits+1]) << 16) | (int32(hmacsha1[offsetbits+2]) << 8) | (int32(hmacsha1[offsetbits+3]) << 0)
return (p & 0x7fffffff)
}func hmacsha1(key string, t int64) (byte, error)
cdata := make(byte, 8)
binary.bigendian.putuint64(cdata, uint64(t))
h1 := hmac.new(sha1.new, decodekey)
_, e := h1.write(cdata)
if e != nil
return h1.sum(nil), nil
}
WebDriver API二次封裝指令碼
project description webdriver api二次封裝類 time 2019 11 11 18 51 author ming from selenium import webdriver from selenium.webdriver.support.select import ...
TCL指令碼中變數的二次引用
tcl指令碼中變數的二次引用 我們通常使用tcl指令碼中的變數一般只會間接訪問一次,即 seta10 puts a那麼如果想要間接訪問兩次怎麼解決,即 set a 10 set b a 如何通過b來列印a的值呢?puts b 列印 a puts 出錯有或者 set i 10 while我們如何解決這...
tipask二次開發總結 tipask二次開發總結
條件模板 statement1 statement2 statement3 不帶下標變數的陣列迴圈 statement php的迴圈輸入 foreach array as value statement foreach array as key value 可以引用介面替換變數,其中必須為大寫字母,...