TIL : bcrypt 사용하기

ESH'S VELOG·2023년 7월 16일
0

오늘은 lv4 report 튜터님 리뷰 중 하나를 develop하려고 한다.

ISSUE

lv4project/Controller/usersController.js
Line 19 in 0620198
password,
비밀번호 저장시 암호화를 해보면 좋겠습니다.

암호화 모듈 중 하나인 bcrypt는 이전 팀과제에서는 했으나 내 담당은 아니었고 이번에 사용법을 알고 적용해보려고 한다.

bcrypt사용법

1) bcrypt 모듈 설치

npm i bcrypt

2) 사용할 파일에 bcrypt모듈 불러오기

const bcrypt = require('bcrypt')

3) 사용할 비밀번호 암호화하는 함수쓰기
=> 클라이언트의 받아온 데이터를 가공하는 작업이기 때문에 usersService.js파일에 사용하였다.

// ... 생략
createUser = async (nickname, password) => {
	const foundNick = await this.usersRepository.findNick(nickname);
    if(!foundNick) {
    const hashedPassword = bcrypt.hashSnyc(password, 10)
    const userData = await this.userRepository.createUser(
    nickname,
    hashedPassword
    );
    return userData;
    }
}

bcrypt.hashSync(password, 10)
bcrypt.hash(password, 10)
둘 다 brypt모듈의 메서드로 첫 번째 매개변수는 암호화할 대상, 두 번째 매개변수는 암호화에 사용되는 Salt로 값이 높을수록 암호화 연산이 증가하고 속도가 느려짐
Salt: 데이터, 비밀번호, 통과암호를 해시 처리하는 단방향 함수의 추가 입력으로 사용되는 랜덤데이터
4) 암호화 했으니 저장도 암호화하고, login시 매칭 할 값도 검증하기

//.. 생략
const passwordMatch = bcrypt.compareSync(password, user.dataValues.password)

검증하는 메서드는
bcrypt.compareSync()

확인한 결과


암호화된 password로 db에 잘 저장되는 것을 확인

profile
Backend Developer - Typescript, Javascript 를 공부합니다.

2개의 댓글

comment-user-thumbnail
2023년 7월 16일

잘봤습니다.

답글 달기
comment-user-thumbnail
2023년 7월 17일

저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!

답글 달기