>백엔드 개발 >Golang >Node.js 호환성을 위해 Golang에서 Bcrypt를 사용하여 비밀번호를 해시하는 방법은 무엇입니까?

Node.js 호환성을 위해 Golang에서 Bcrypt를 사용하여 비밀번호를 해시하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-09 12:33:18961검색

How to Hash Passwords with Bcrypt in Golang for Node.js Compatibility?

Golang에서 Bcrypt를 사용하여 비밀번호 해싱(Node.js 호환성)

사용자 인증을 위해 Node.js 및 Passport에서 Golang으로 마이그레이션하면 특히 데이터베이스에 저장된 암호화된 비밀번호를 처리할 때 문제가 발생합니다. 이 가이드에서는 Node.js와 호환되는 Golang에서 bcrypt 해시 문자열을 생성하는 방법을 살펴봅니다.

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 등가

Golang에서 동일한 해싱 결과를 얻으려면 다음을 사용하세요. 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
}

이 예제는 Golang에서 bcrypt를 사용하여 해시된 해시를 생성하는 방법을 보여줍니다. Node.js에서 생성된 것과 동일한 비밀번호를 사용하므로 Golang으로 전환하는 동안 암호화된 비밀번호를 원활하게 마이그레이션할 수 있습니다.

위 내용은 Node.js 호환성을 위해 Golang에서 Bcrypt를 사용하여 비밀번호를 해시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.