Golang 中的雜湊密碼與Node.js 的Bcrypt 相容
在Node.js 中,bcrypt 套件通常用於雜湊用戶密碼。遷移到 Golang 時,保持與資料庫中儲存的現有雜湊密碼的兼容性至關重要。
Node.js Bcrypt 雜湊程式碼
提供的 Node.js 程式碼利用 bcrypt 模組產生雜湊字串。它使用兩個順序函數:genSalt 創建鹽和哈希,使用密碼和鹽產生哈希。
Golang Bcrypt 雜湊等效
使用的等效 Golang 實作golang.org/x/crypto/bcrypt套件將類似於:
hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost);
工作範例
為了演示相容性,以下程式碼範例說明了在Golang 中對密碼進行雜湊處理並根據Node .js產生的密碼進行驗證hash:
package main import ( "fmt" "golang.org/x/crypto/bcrypt" ) func main() { // Generate a hash from a password. password := []byte("SecretPassword") hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost) if err != nil { panic(err) } fmt.Println("Generated Hash:", string(hashedPassword)) // Simulate Node.js-generated hash. nodejsHash := []byte("a$n8J51m8dYIm/3CmaFCizgO93Gkj/3RZIiI4S2G8NkyL2fKvsBpfHy") // Compare with the Golang-generated hash. err = bcrypt.CompareHashAndPassword(nodejsHash, password) if err != nil { fmt.Println("Passwords do not match.") } else { fmt.Println("Passwords match.") } }
用法
要使用此程式碼,首先確保您已安裝並匯入必要的Golang 套件,如範例所示。然後,只需將您的密碼傳遞給GenerateFromPassword即可產生雜湊字串。對於密碼驗證,請使用 CompareHashAndPassword 將資料庫中的雜湊密碼與提供的密碼進行比較。如果傳回的錯誤為 nil,則密碼匹配,符合 Node.js 和 Golang 標準。
以上是如何確保 Node.js 的 Bcrypt 和 Golang 的 Bcrypt 密碼哈希相容?的詳細內容。更多資訊請關注PHP中文網其他相關文章!