我用Node建立了一个站点.js+passport用于用户身份验证.

现在我需要迁移到Golang,需要使用数据库中保存的用户密码进行身份验证.

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();
        });
    });

如何使字符串与哈希 node 相同.和Golang在一起?

推荐答案

golang.org/x/crypto/bcrypt美元的价格,我相信相当于:

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

Working example:

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相关问答推荐

GraphQL MongoDB Mongoose填充字段未获取多个类别

Sequelize-测试使用虚拟场更新模型

一个函数中的两个依赖的NodeJS数据库操作.如果第二个失败了怎么办?

Rest-Api动态图像路径和Express除非

处理嵌套元素时,使用xml2js库解析XML时发生错误

使用pm2启动服务器

连接到在线 redis 数据库时出错

mongoose 7.0.3 使用运算符 $and 严格搜索日期

结合后端(Express)和前端(Angular)路由

多字段传递获取查询失败

BrowserRouter工作时为什么HashRouter不工作?

Pug - 包括带有include关键字的c代码

node_modules 中 .bin 文件夹的用途是什么?

如何在 NodeJS 中获取操作系统用户名?

判断一个数组中的每个元素是否都在第二个数组中

如何将子集合添加到 Firestore 中的文档?

使用 Webpack 和 font-face 加载字体

Node.js 应用程序有周期性的缓慢和/或超时(不接受传入的请求)

如何判断 Node.js 中是否设置了环境变量?

Express.js中的bodyParser.urlencoded({extended: true }))和bodyParser.json()是什么意思?