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条)

报告相同问题?

悬赏问题

  • ¥15 需求DC-DC降压电路
  • ¥15 java corba的客户端该如何指定使用本地某个固定IP去连接服务端?
  • ¥15 activiti工作流问题,求解答
  • ¥15 有人写过RPA后台管理系统么?
  • ¥15 Bioage计算生物学年龄
  • ¥20 如何将FPGA Alveo U50恢复原来出厂设置哇?
  • ¥50 cocos2d-x lua 在mac上接入lua protobuf?
  • ¥15 es 7.17.20版本生成时间戳
  • ¥15 wpf dategrid表头排序图标自定义
  • ¥15 xshell无法连接提示ssh服务器拒绝密码