반응형
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.crypto 의 bcrypt 패키지 를 살펴보세요 (문서는 여기에 있습니다 ).
그것을 설치하려면
go get golang.org/x/crypto/bcrypt
bcrypt 패키지의 사용법을 설명하는 블로그 항목은 여기 에서 찾을 수 있습니다 . 패키지를 작성한 사람이 보낸 것이므로 작동해야합니다.)
사용중인 node.js 라이브러리와의 한 가지 차이점은 go 패키지에 (내 보낸) genSalt
함수 가 없지만를 호출 할 때 자동으로 솔트를 생성한다는 것 bcrypt.GenerateFromPassword
입니다.
반응형
'IT TIP' 카테고리의 다른 글
Android에서 둥근 모양을 얻는 방법 (0) | 2020.12.29 |
---|---|
bower 설치 디렉토리 선택 (0) | 2020.12.29 |
WKWebView에서 모든 쿠키 가져 오기 (0) | 2020.12.29 |
중첩 배열 내에서 일치하는 하위 문서 요소 만 반환 (0) | 2020.12.29 |
바이트는 다르지만 값은 같은 유니 코드 문자열을 어떻게 비교합니까? (0) | 2020.12.29 |