IT TIP

Golang의 Bcrypt 비밀번호 해싱 (Node.js와 호환)?

itqueen 2020. 12. 29. 08:14
반응형

Golang의 Bcrypt 비밀번호 해싱 (Node.js와 호환)?


사용자 인증을 위해 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
}

go.cryptobcrypt 패키지살펴보세요 (문서는 여기에 있습니다 ).

그것을 설치하려면

go get golang.org/x/crypto/bcrypt

bcrypt 패키지의 사용법을 설명하는 블로그 항목은 여기 에서 찾을 수 있습니다 . 패키지를 작성한 사람이 보낸 것이므로 작동해야합니다.)

사용중인 node.js 라이브러리와의 한 가지 차이점은 go 패키지에 (내 보낸) genSalt함수 가 없지만를 호출 할 때 자동으로 솔트를 생성한다는 것 bcrypt.GenerateFromPassword입니다.

참조 URL : https://stackoverflow.com/questions/23259586/bcrypt-password-hashing-in-golang-compatible-with-node-js

반응형