Programming/Node.js

[Node.js] bcrypt 이용해서 암호화 하기 ( 해시함수 )

MOONCO 2021. 11. 13. 18:52

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("비밀번호", 반복 횟수)
반응형