일반적으로, 사용자의 비밀번호를 데이터베이스에 저장할 때, 보안을 위해 비밀번호를 평문으로 저장하지 않고 암호화해 저장한다.
bcrypt 모듈은 입력받은 데이터를 특정 암호화 알고리즘을 이용해 암호화 및 검증을 도와주는 모듈이다.
aaaa4321 이라는 비밀번호를 bcrypt를 이용해 암호화하면 특정한 문자열로 변환된다.
이 변환된 문자열은 단방향 암호화되어 원래의 비밀번호 ( aaaa4321 )로 복구할 수 없게 된다.
하지만, 입력된 비밀번호가 암호화된 문자열과 일치하는지를 비교할 수 있다.
이를 통해 사용자의 비밀번호가 올바른지, 아닌지 검증할 수 있게 되는것이다.
bcrypt 설치
# yarn을 이용해 bcrypt를 설치합니다.
yarn add bcrypt
bcrypt 암호화
import bcrypt from 'bcrypt';
const password = 'Sparta'; // 사용자의 비밀번호
const saltRounds = 10; // salt를 얼마나 복잡하게 만들지 결정합니다.
// 'hashedPassword'는 암호화된 비밀번호 입니다.
const hashedPassword = await bcrypt.hash(password, saltRounds);
console.log(hashedPassword); //$2b$10$OOziCKNP/dH1jd.Wvc3JluZVm7H8WXR8oUmxUQ/cfdizQOLjCXoXa
bcrypt 복호화
import bcrypt from 'bcrypt';
const password = 'Sparta'; // 사용자가 입력한 비밀번호
const hashed = '$2b$10$OOziCKNP/dH1jd.Wvc3JluZVm7H8WXR8oUmxUQ/cfdizQOLjCXoXa'; // DB에서 가져온 암호화된 비밀번호
// 'result'는 비밀번호가 일치하면 'true' 아니면 'false'
const result = await bcrypt.compare(password, hashed);
console.log(result); // true
// 비밀번호가 일치하지 않다면, 'false'
const failedResult = await bcrypt.compare('FailedPassword', hashed);
console.log(failedResult); // false
'Javascript' 카테고리의 다른 글
[Javascript] delete 연산자 ( object 속성 값 삭제 ) (0) | 2024.09.10 |
---|---|
[Javascript] .env ( 환경 변수 읽어 오기 ) (0) | 2024.09.09 |
[Javascript][실습] 게시판 프로젝트 (1) | 2024.09.08 |
[Javascript] Prettier ( 코드 서식 관리 도구 ) (0) | 2024.09.04 |
[Javascript][Node.js] 에러 처리 미들웨어 (0) | 2024.09.04 |