Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GIT
- flask
- Dinosaur
- JavaScript
- 정렬
- Python
- Bull
- react
- OCR
- 게임
- MongoDB
- nodejs
- 자료구조
- TypeScript
- Nest.js
- cookie
- MySQL
- typeORM
- dfs
- game
- Express
- nestjs
- 공룡게임
- jest
- mongoose
- Sequelize
- AWS
- class
- Queue
Archives
- Today
- Total
포시코딩
Node.js, MongoDB 로 웹서비스 만들기 - 10. 회원가입(2) - bcrypt 암호화 본문
728x90
최근 현업쪽에서 bcrypt 를 많이 쓴다고 한다.
좀 살펴봤더니 귀찮게 salt 생성하고 같이 저장하는 방식이 아니라 한번 써볼거임
일단 bcrypt 라이브러리를 사용할 수 있게 터미널을 통해 설치한다.
npm install bcrypt
salt 대신 같은 salt 를 몇번이나 여러번 돌릴지 횟수를 지정해줌
const saltRounds = 10;
bcrypt.hash(beforePassword, saltRounds, (err, hash)=>{ // hash: afterPassword
try {
// db 에 회원정보 저장하는 코드
} catch {
console.log('err: ' + err);
}
})
그럼 hash 파라미터 부분에 암호화된 비밀번호가 저장되고
해당값을 db 에 저장하여 사용하면 된다.
암호 확인은 다음과 같다.
bcrypt.compare(beforePassword, afterPassword, (err, result)=>{
// result -> 암호맞음: true, 틀림: false
try {
if(result) {
console.log('true'); // 로그인
} else {
console.log('false'); // 실패
}
} catch(err) {
console.log(err);
}
})
** 비밀번호를 1234 라고 임의로 주고 테스트중인데
afterPw: $2b$10$xy3SEyrzjyjOAPh8NIMn4OBb4dzjGSAneiQO91tPn508FU3s9gbvy
afterPw: $2b$10$IIFUlVxEAB./p.C6RCaHce9XeIfBohpUPK3gbTmj7O/as37tJHp1.
afterPw: $2b$10$y0hWxgrvrd69MGA4KBEft.B2SpriCQ5q2yY6UU5HdF5IodgGYDgyS
이런식으로 3번의 암호화 결과가 나왔다.
위 암호 확인 코드 afterPassword 부분에 3개 값 다 넣어서 검증해봤는데 true 가 나왔고
다른 값을 넣어봤는데 false 가 나왔다.
서로 다른 salt 가 적용되었으니 같은 비밀번호라도 암호화 후가 다르게 나왔을거고
해당 인증 함수에는 salt 도, saltRounds 를 넣는 부분도 없는데 어떻게
암호화 전 후의 비밀번호만으로 인증 여부를 확인하는지 궁금해졌다.
->
구글링 해보니 암호화된 값 앞부분에 salting 에 대한 정보가 들어가있다고 한다.
잘 보면 동일한 값이 앞부분에 들어가고 있는데 이 부분인듯..
해당 내용 관련해서는 아래 세번째 링크를 참고
https://goodmemory.tistory.com/95
https://thinkforthink.tistory.com/211
728x90
'Node.js' 카테고리의 다른 글
Node.js, MongoDB 로 웹서비스 만들기 - 12. 로그인(1) - passport (0) | 2022.06.27 |
---|---|
Node.js, MongoDB 로 웹서비스 만들기 - 11. 회원가입, 로그인 - bcrypt (0) | 2022.06.26 |
Node.js, MongoDB 로 웹서비스 만들기 - 9. 회원가입(1) - INSERT (3) | 2022.06.10 |
Node.js, MongoDB 로 웹서비스 만들기 - 8. Ajax 로 post 요청 (0) | 2022.06.10 |
Node.js, MongoDB 로 웹서비스 만들기 - 7. MongoDB 세팅 및 연결(2) (0) | 2022.06.09 |