위코드 1차 프로젝트 진행시 공부한 내용을 정리하였습니다.
회원가입 API를 만드는 과정에서 genSalt()라는 bcrypt의 메서드에 대해서 알게되었습니다.
먼저 bcrypt에 대해서 간략하게 알아보겠습니다.
bcrypt는 단방향 해시 알고리즘이기 때문에 복호화가 불가능합니다. 이러한 단점을 보완하기 위해 단방향 암호화에 솔팅(Salting)과 키 스트레칭(Key Stretching) 기술을 적용시킵니다.
bcrypt는 레인보우 테이블 공격을 방지하기 위해 솔팅과 키 스트레칭을 적용한 대표적인 예입니다.
앞서 말한 것과 같이 bcrypt에는 솔팅(Salting)작업이 꼭 필요합니다. 이를 하기 위해 genSalt()라는 메서드를 활용하였습니다.
소금(Salt)생성기라고 말할 수 있습니다.
소금은 hash 함수에서 암호화된 비밀번호를 생성할 때 추가되는 바이트 단위의 임의의 문자열입니다.
실습을 통해 상세하게 알아가 보겠습니다.
const makePassword = async (plainPassword) => {
const saltRounds = 10; //(1)
const salt = await bcrypt.genSalt(saltRounds); //(2)
return bcrypt.hash(plainPassword, salt); //(3)
};
이 코드를 적용하고 비밀번호의 정규화 표현과 더불어 적용하게 되면
이미지와 같이 데이터 베이스에 쌓이게 됩니다!
genSalt()메서드를 알기전에는 bcrypt를 사용하는데 조금 이해가 가지 않는 부분들이 있었습니다. 메서드를 활용하다보니 이해도가 쑥! 올라서 너무 신기했습니다~
혹시 저처럼 이해가 잘 안되시는 분들은 한번 적용해 보시면 좋을 것 같습니다!😎