bcrypt란?
hash 함수를 이용해 정보를 암호화 할 수 있도록 해주는 Node.js 패키지
bcrypt의 필요성
MD5 방식의 해시함수는 빠르기는 하나, 보안이 약해 해킹에 취약하다.
SHA 방식의 해시함수는 안전하기는 하나, 암호화하는데 시간이 너무 오래 걸린다.
공유 메시지 ( salt )를 입력값에 추가하는 방식은 무차별 대입 공격을 막아주지는 못한다.
bcrypt는 사용자가 보안도와 속도를 유동적으로 정할 수 있다.
해시 함수 별 성능 비교 | |||
해시 함수 | MD5 | bcrypt | SHA |
보안 | 약함 | 중간 | 강함 |
속도 | 빠름 | 중간 | 느림 |
bcrypt 설치하기
npm i bcrypt
bcrypt 사용법
비밀번호 만들고 암호화 하기
//index.js
// bcrypt 불러오기 - commonjs
const bcrypt = require("bcrypt")
// 해시 함수로 비밀번호 암호화해서 변수에 저장하기
const encrypted = bcrypt.hash("비밀번호", 해시함수 반복 횟수)
// 암호화된 내용 확인하기
console.log(encrypted)
비밀번호 맞는지 확인하기
// index.js
//위의 내용과 이어짐...
// 새로 입력한 비밀번호가, 암호화 된 비밀번호와 일치하는지 확인하기
const passwordOk = bcrypt.compare("비밀번호", encryted)
// 비밀번호가 일치하면 true, 일치하지 않으면 false를 반환한다.
console.log("비밀번호 일치 여부 : ",passwordOk)
그외 의 기능
// 랜덤 공유메시지 생성하기
bcrypt.genSalt(반복횟수, bcrypt버전)
// 비동기 방식으로 hash 함수 사용하기
bcrypt.hashSync("비밀번호", 반복 횟수)
반응형