해시 함수란?
: 임이의 길이를 갖는 메시지를 입력받아 고정된 길이의 해시값을 출력하는 함수
- 일방향 함수로, 해시가 노출되어도 원래 입력 값을 알아낼 수 없다.
- 입력 값이 같으면 항상 같은 해시를 반환한다.

→ 주로 웹 개발에서는, 해시 함수를 통해 비밀번호를 저장하여 보안을 높인다 !
bcrypt 모듈 사용하기
- 모듈 설치 및 임포트
npm i bcrypt const bcrypt = require(”bcrypt”); - 비밀번호 해시하기 - bcrypt.hash
bcrypt.hash(myPlaintextPassword, salt, function(err, hash) { // Store hash in your password DB. });- myPlaintextPassword : 해시하려는 값
- salt : 해시를 반복할 횟수 → 반복을 많이하면 작업 시간 증가, 보안성 증가
- 콜백함수 : 입력값을 해시한 후에 실행할 함수 (당연히 try/catch 문 사용하겠지 ?! )
- 비밀번호 확인하기 - bcrypt.compare
// Load hash from your password DB.
bcrypt.compare(myPlaintextPassword, hash, function(err, result) {
// result == true
});
bcrypt.compare(someOtherPlaintextPassword, hash, function(err, result) {
// result == false
});
→ 같은 입력 값에는 항상 같은 해시를 반환한다는 해시 함수의 특성을 사용 !
- myPlaintextPassword, someOtherPlaintextPassword : 비교할 입력 값
- hash : 비교할 대상 ex) 데이터베이스에서 가져온 해시 값
- 콜백 함수 : 값 2개를 비교한 후에 실행할 함수
reference
https://www.npmjs.com/package/bcrypt
'[NodeJS] 노드' 카테고리의 다른 글
| [Express] express-async-handler (0) | 2024.06.03 |
|---|---|
| RESTful API (0) | 2024.05.28 |
| 블로킹과 논블로킹 (0) | 2024.05.27 |
| [Javascript] let과 const 그리고 var (0) | 2024.05.27 |
| 버퍼와 스트림 (0) | 2024.05.23 |