首頁 > 後端開發 > Golang > 主體

如何在沒有 syscall 或 scrypt 的情況下安全地在 Golang/App Engine 中對密碼進行雜湊處理?

Linda Hamilton
發布: 2024-10-30 08:26:02
原創
593 人瀏覽過

How to Securely Hash Passwords in Golang/App Engine Without syscall or scrypt?

在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>
登入後複製
使用以下步驟實現bcrypt:

<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>
登入後複製
對於使用 pbkdf2 的簡單雜湊:

以上是如何在沒有 syscall 或 scrypt 的情況下安全地在 Golang/App Engine 中對密碼進行雜湊處理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!