dongxun8189 2014-04-24 04:03
浏览 202
已采纳

Golang中的Bcrypt密码哈希(与Node.js兼容)?

I set up a site with Node.js+passport for user authentication.

Now I need to migrate to Golang, and need to do authentication with the user passwords saved in db.

The Node.js encryption code is:

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

How to make the same hashed string as Node.js bcrypt with Golang?

  • 写回答

2条回答 默认 最新

  • dory4404 2014-04-24 04:26
    关注

    Using the golang.org/x/crypto/bcrypt package, I believe the equivalent would be:

    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
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料