bcrypt 모듈을 이용하여 암호화를 해보자

오버·2022년 8월 25일
0

Node.js Study

목록 보기
20/22

시작하며...

오늘은 계속 강조하고 있는 '보안'에 관련된 모듈입니다.
bcrypt는 암호화를 할 수 있게 해주는 모듈이며 DB에 저장할때 정보를 그냥 저장하는 것이 암호화를 거친 후에 저장하는 것이 중요합니다.

bcrypt 사용하기

npm i bcrypt --save

모듈을 설치해주고

const bcrypt = require('bctypt')

모듈을 불러옵니다.

const pwd = 'test1234'
const encodePwd = bcrypt.hashSync(pwd, 10);

그리고 암호화를 진행하는 것이 이 코드입니다.

hashSync는 반환형이 Promise형이라서 Sync 사용을 권장드립니다.

hash할 때 숫자 10 파라미터명은 saltOrRounds입니다.

salt를 몇 번 돌릴거냐는 뜻이구요.

보통 기본 10으로 설정한다고 보시면 됩니다.

saltOrRounds가 높을 수록 암호화가 강력해지지만 속도는 현저히 느려진다는 점을 알아주셨으면 합니다.

그리고 이런 암호화된 패스워드와 원래 패스워드를 어떻게 비교할 수 있을까요??

const pwd = 'test1234'
const encodePwd = bcrypt.hashSync(pwd, 10);
bcrypt.compare(pwd, encodPwd, (err, same) => {
  // async callback
})

compare 함수를 이용해서 복호화를 진행 후 원래 값과 비교해주는 함수입니다.

만약 로그인 API를 짠다고 가정한다면 bcrypt 모듈을 이용하여 비밀번호를 암호화하여 DB에 저장하고 compare를 이용하여 입력한 비밀번호가 일치하는지에 관한 코드를 짤 수 있을 것 같습니다.

마치며...

오늘은 보안에 관련한 모듈을 배워봤습니다.

정말이지 배우면 배울수록 백엔드와 보안은 땔래야 땔 수 없는 관계라고 생각합니다.

보안에 민감한 개발자로 성장할 수 있도록 열심히 공부합시다.

profile
개발자

0개의 댓글