node.js - Golang 中的 Bcrypt 密码散列(与 Node.js 兼容)?

标签 node.js go bcrypt

我使用 Node.js+passport 设置了一个站点以进行用户身份验证。

现在我需要迁移到 Golang,并且需要使用保存在 db 中的用户密码进行身份验证。

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 制作与 Node.js bcrypt 相同的哈希字符串?

最佳答案

使用 golang.org/x/crypto/bcrypt包,我相信相当于:

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
}

关于node.js - Golang 中的 Bcrypt 密码散列(与 Node.js 兼容)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23259586/

相关文章:

go - 从使用 Go 制作的生产服务器中获取 panic

javascript - Nodejs bcrypt库

node.js - 如何在Nodejs中获取base64编码的视频文件的缩略图?

javascript - 计算并存储表列值的平均值

api - GO:Confluence API 未获取所有附件

java - 具有 Spring 安全性的自定义密码盐

node.js - BCrypt: 'the number of rounds to process data' 是什么意思?

node.js - 仅当设置选项卡时,Docusign 请求才返回错误?

node.js - 如何验证 Node.js 中的 Cluster 是否正常工作?

rest - REST api设计的GET方法中的HTTP状态码