首頁 >後端開發 >Golang >如何在 Golang 中使用 Bcrypt 哈希密碼以實現 Node.js 相容性?

如何在 Golang 中使用 Bcrypt 哈希密碼以實現 Node.js 相容性?

Patricia Arquette
Patricia Arquette原創
2024-12-09 12:33:18964瀏覽

How to Hash Passwords with Bcrypt in Golang for Node.js Compatibility?

在Golang 中使用Bcrypt 雜湊密碼(Node.js 相容性)

從Node.js 和Passport 遷移到Golang 進行用戶身份驗證可以呈現挑戰,特別是在處理儲存在資料庫中的加密密碼時。本指南探討如何在 Golang 中建立與 Node.js 相容的 bcrypt 哈希字串。

Node.js 加密代碼

var bcrypt = require('bcrypt');

bcrypt.genSalt(10, function(err, salt) {
    if(err) return next(err);

    bcrypt.hash(user.password, salt, function(err, hash) {
        if(err) return next(err);
        user.password = hash;
        next();
    });
});

Golang 等效項

要在Golang 中獲得相同的希結果,請使用golang.org/x/crypto/bcrypt package.

hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)

工作範例

package main

import (
    "golang.org/x/crypto/bcrypt"
    "fmt"
)

func main() {
    password := []byte("MyDarkSecret")

    // Hashing the password with the default cost of 10
    hashedPassword, err := bcrypt.GenerateFromPassword(password, bcrypt.DefaultCost)
    if err != nil {
        panic(err)
    }
    fmt.Println(string(hashedPassword))

    // Comparing the password with the hash
    err = bcrypt.CompareHashAndPassword(hashedPassword, password)
    fmt.Println(err) // nil means it is a match
}

此範例示範了在Golang 中使用bcrypt 產生雜湊值密碼與Node.js 中建立的密碼等效,允許在過渡到Golang 期間無縫遷移加密密碼。

以上是如何在 Golang 中使用 Bcrypt 哈希密碼以實現 Node.js 相容性?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn