inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

따라하며 배우는 NestJS

로그인 기능 구현하기

salt 이용하여 패스워드 생성후, 나중에 패스워드 비교할때 salt값이 필요하지 않나요?

1128

Jaeil Cho

작성한 질문수 2

1

안녕하세요. 강의 잘 듣고 있습니다!
bcrypt를 이용한 패스워드 생성, 비교할때 궁금점이 생겼습니다.
 
const salt = await bcrypt.genSalt()
const hashedPassword = await bcrypt.hash(password, salt)
 
이렇게 password 생성하여 저장했으면,
 
로그인할때 password 값 비교할때 저 방식과 똑같이 password 생성하여 DB에 저장되어있는 값과 비교해야하지 않나요?
 
bcrypt.compare(password, user.password)
 
기존 password와 사용자가 입력한 password를 이렇게 단순 비교해도 성공하는 이유가 무엇인가요?
 
이렇게 되면 salt를 사용할 필요가 없지 않나 생각이 듭니다.
 
 
 

bcrypt NestJS jwt TypeORM postgresql

답변 1

1

John Ahn

안녕하세요 !! 

compare 함수를 써서 plain과 실제 hashed 된 비번을 비교할 때 

그 과정에서 hashed된 비번을  salt부분과 hash 부분을 분리합니다. 

그 이후에  salt 된 부분과 plain을 encrypt 시켜서 원래 hashed된 비밀번호와 비교를 해서 match 되었는지 결론을 도출합니다 !! 

감사합니다. 

1

Jaeil Cho

답변 감사합니다! 

아직 의문이 남아있는데요,

원래 사용자가 salt값을 따로 가지고 있다가 로그인할때 그 salt 값을 이용하여 password를 생성해서 비교하는게 아니라, 매번 그냥 compare으로만 비교하게되면

원래 사용자 혹은 해킹하려는 사람이 결국은 똑같은 원래 password만 입력해도

결국 로그인되는데,,, 그럼 결국 salt를 하는 의미가 없어지는게 아닌가 생각이 듭니다.

2

이용우

저도 해당하는 내용을 찾아봤었는데, 스택 오버플로우에 자세하게 설명되어있던 것을 확인해서 이해하게되었습니다.

https://stackoverflow.com/questions/13023361/how-does-node-bcrypt-js-compare-hashed-and-plaintext-passwords-without-the-salt

로거 객체 질문

0

71

1

회원가입 기능 구현 버전 변경에 따른 코드수정(해당 사항은 업데이트 예정이 없나요?)

0

84

1

파일을 찾지 못하는 오류가 계속 뜹니다

0

113

1

services와 repository 파일에서 해야하는 작업

0

136

1

커스텀 파이프에서 value의 타입이 string 이 아닐때

0

181

1

nestjs 기본 구조 설명에서 궁금한게 있습니다.

0

183

0

typeorm ^10.0.2 버전 사용시 No metadata for "BoardRepository" was found. 오류 발생 해결방법.

3

279

1

Model과 Dto의 차이점을 좀 쉽게 알수 있을까요?

0

691

1

강의 자료 관련해서 글 남깁니다.

0

486

1

"ID로 특정 게시물 가져오기" 부분이 잘못되었습니다.

0

457

1

선생님 nestjs랑 Nextjs랑 같이 연동해서 작업하는거 어떻게 생각하시나요?

0

2530

1

쌤 근데 enum 말고 type 으로 타입선언해주면안될까요?

0

621

1

pgAdmin 4에서 데이터 베이스 만들어주기 부분

0

655

1

강의 자료 관련해서 질문있습니다.

0

470

2

port 5432 failed: recived invalid response to ssl negotiation

0

774

1

repository.ts 에서 method 를 가져 오고 싶은데, 해당 메소드가 없다고 뜨네요

0

405

1

컨트롤러에선 async/await 사용하지 않아도 되는 이유

1

700

1

마지막 강의 영상에서 배포 자료는 어디서 볼 수 있나요?

0

391

1

No repository for 질문

0

529

1

특정 게시물을 찾을 때 없는 경우 에러 메세지 생성 에러

0

480

1

XML파일도 링크 공유해주시면 감사하겠습니다.

0

350

1

회원가입 기능 구현 중 오류가 났습니다.

0

501

1

NotFoundException

0

712

1

도와주세요 ㅠㅠ!!

0

1087

2