[Express] 비밀번호 해싱하기

jaeyunim00·2023년 7월 17일
0

nodeJS

목록 보기
5/8
post-thumbnail

1. bcrypt

bcrypt는 한번 해싱하면 되돌릴 수 없는 단방향 해싱이다.

암호화 기법인 salt키 스트레칭을 사용해 기존 보안 방식보다 안전하다.

salt?

비밀번호에 추가 문자열을 붙여 암호화 하는 것이다.

비밀번호마다 다른 문자열을 추가하기 때문에 보안성이 높아진다.

salt의 정보는 설정할 수 있으며, 매우 중요하기 때문에 잘 보관해야 한다.

키 스트레칭?

여기에서 키 스트레칭이란 길이를 늘리는게 아닌, 해시함수를 반복해 출력 값이 아주 느리게 산출되도록 하는 방법이다.

해킹을 하는데 시간과 비용이 증가되기 때문에 반복횟수를 늘릴수록 보안이 강화된다.


2. bcrypt를 통한 비밀번호 해싱, 비교

사용법은 다음과 같다.

bcrypt.hash(mainPlainTextPassword, saltRounds)

사용법은 다양하지만, scheme.pre() 메서드를 이용해 저장되기전에 자동으로 해싱되게 하면 편하다.

userScheme.pre("save", async function () {
  this.password = await bcrypt.hash(this.password, 5);
});

bycrypt.compare(mainPlainTextPassword, hash)

compare함수는 true/false를 return하기 때문에 다음과 같이 변수를 만들고 이용하면 편하다.

  const ok = bcrypt.compare(password, user.password);
profile
개발노트

1개의 댓글

comment-user-thumbnail
2023년 7월 17일

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

답글 달기