Go 언어 열심히 배웠어요~ 암호 산열화~

4680 단어 Go

입문


안녕하세요.나는 모 학교에서 프로그래밍 등을 배우는 서버 분야의 프로그래머다.
그렇다면 새해 첫 보도는 golang으로 로그인 기능을 설치할 때의 비밀번호를 산열화하는 방법을 소개한다.

준비

golang.org/x/crypto/bcrypt를 사용하면 안전한 암호 산열과 검사를 할 수 있습니다.
우선 $GOPATH로 이동하고 다음 명령을 누르십시오.
terminal
go get golang.org/x/crypto/bcrypt

데이터베이스 등 로그인 암호의 산열화

import "golang.org/x/crypto/bcrypt"

func main() {
    hash, err := passwordHash("登録用パスワード")
    if err != nil {
        panic(err)
    }
    println(hash)
}

// パスワードハッシュを作る関数
func passwordHash(pw string) (string, error) {
    hash, err := bcrypt.GenerateFromPassword([]byte(pw), bcrypt.DefaultCost)
    if err != nil {
        return "", err
    }
    return string(hash), err
}
GenerateFromPassword []byte 형식을 전달해야 하기 때문에 폼 등에서 입력한 비밀번호를 []byte 형식으로 전달해야 합니다.
반환값도 []byte형이므로 DB에 저장할 때 string형으로 변환합니다.

등록된 암호 산열이 입력 암호와 일치하는지 확인

import "golang.org/x/crypto/bcrypt"

func main() {
    // hashはDBなどからとってくる
    err := passwordVerify(hash, "入力されたパスワード")
    if err != nil {
        panic(err)
    }

    println("認証しました")
}

// 登録したパスワードハッシュが入力パスワードにマッチするかどうかを調べる関数
func passwordVerify(hash, pw string) error {
    return bcrypt.CompareHashAndPassword([]byte(hash), []byte(pw))
}
CompareHashAndPassword도 []byte 유형을 전송해야 하기 때문에 전송해야 한다.
이상
무슨 잘못이 있으면 연락 주세요.
끝까지 읽어줘서 고마워요.

좋은 웹페이지 즐겨찾기