在Golang/App Engine 中安全地散列密碼,無需系統調用或scrypt
雖然bcrypt 和scrypt 通常用於密碼散裝>
雖然bcrypt 和scrypt 通常用於密碼散裝列,但它們可能不是由於系統調用可訪問性,適合App Engine。作為替代方案,請考慮利用 go.crypto 程式庫進行安全密碼雜湊。
go.crypto 套件提供對 pbkdf2 和 bcrypt 的支援。兩種實作均完全以 Go 編寫,確保與 App Engine 的兼容性。
1.使用bcrypt<code class="bash">go get golang.org/x/crypto/bcrypt</code>
<code class="go">import "golang.org/x/crypto/bcrypt" func clear(b []byte) { for i := 0; i < len(b); i++ { b[i] = 0; } } func Crypt(password []byte) ([]byte, error) { defer clear(password) return bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) } ctext, err := Crypt(pass) if err != nil { log.Fatal(err) } fmt.Println(string(ctext))</code>
a$sylGijT5CIJZ9ViJsxZOS.IB2tOtJ40hf82eFbTwq87iVAOb5GL8e
2。使用 pbkdf2
<code class="go">import "golang.org/x/crypto/pbkdf2" func HashPassword(password, salt []byte) []byte { defer clear(password) return pbkdf2.Key(password, salt, 4096, sha256.Size, sha256.New) } pass := []byte("foo") salt := []byte("bar") fmt.Printf("%x\n", HashPassword(pass, salt))</code>
以上是如何在沒有 syscall 或 scrypt 的情況下安全地在 Golang/App Engine 中對密碼進行雜湊處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!