
bcrypt는 한번 해싱하면 되돌릴 수 없는 단방향 해싱이다.
암호화 기법인 salt와 키 스트레칭을 사용해 기존 보안 방식보다 안전하다.
비밀번호에 추가 문자열을 붙여 암호화 하는 것이다.
비밀번호마다 다른 문자열을 추가하기 때문에 보안성이 높아진다.
salt의 정보는 설정할 수 있으며, 매우 중요하기 때문에 잘 보관해야 한다.
여기에서 키 스트레칭이란 길이를 늘리는게 아닌, 해시함수를 반복해 출력 값이 아주 느리게 산출되도록 하는 방법이다.
해킹을 하는데 시간과 비용이 증가되기 때문에 반복횟수를 늘릴수록 보안이 강화된다.
![]()
사용법은 다음과 같다.
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);
저도 개발자인데 같이 교류 많이 해봐요 ㅎㅎ! 서로 화이팅합시다!