[Node.js] bcrypt로 비밀번호 암호화하기

HoonDong_K·2023년 1월 26일
0

[project #1] movie-inner

목록 보기
3/10
post-thumbnail

암호화? 해시?

본문에 들어가기 앞서, 암호화와 해시화에 대해서 구분할 필요가 있다.

암호화(Encryption)해시(Hash) 는 모두 암호화 기법에 해당하지만 방향성에서 차이를 보인다.

  • 암호화 (Encryption) > 양방향 암호화 기법으로 암호화와 복호화가 가능하다.
  • 해시 (Hash) > 단방향 암호화 기법으로 복호화가 불가능하다.

Bcrypt

1. 설치

    npm install bcrypt 

2. 비밀번호 해시

import bcrypt from "bcrypt"

const hashingPW = async (params: { password: string }) => {
    const { password } = params
    const saltRounds = 10

    // salt 생성
    const salt = await bcrypt.genSalt(saltRounds)

    // hash
    const hashedPw = await bcrypt.hash(password, salt)

    return {
        status: 201,
        data: { salt, hashedPw },
    }
}

3. 비밀번호 검사 ( 위 코드 이어서 )

const fakePassword = "bye"
    
//compare
const firstCompare = await bcrypt.compare(password, hashedPw)
const secondCompare = await bcrypt.compare(fakePassword, hashedPw)

참고 : https://www.npmjs.com/package/bcrypt

profile
개발을 잘하고 싶은 개발자

0개의 댓글