bcrypt

youngsung·2023년 3월 22일
0

Node.js

목록 보기
5/7

bcrypt란

Blowfish 암호를 기반으로 설계된 암호화 함수이며 현재까지 이용중인 가장 강력한 해시 메커니즘 중 하나입니다.

단방향 암호화란?

단방향 암호화는 평문을 암호화 할 수는 있지만 암호화된 문자를 다시 평문으로 복호화가 불가능한 방식입니다. 주로 hash알고리즘을 이용하여 단방향 암호화를 구현합니다.

1. bcrypt 설치

npm install bcrypt --save

2. 비밀번호 암호화 하기

  • hash는 동기, hashSync는 비동기 방식입니다.

  • 파라미터로 넣은 숫자 12는 암호화에 사용되는 Salt로, 값이 높을 수록 암호화 연산이 증가합니다. 하지만 암호화하는데 속도가 느려집니다 그래서 10~14정도로 사용합니다

bcrypt 모듈을 소스 상에서 임포트

const bcrypt = require('bcrypt')

비밀번호 암호화

// 동기
const password = '1234'
const encryptedPassowrd = bcrypt.hashSync(password, 10) // sync
// 비동기
const password = '1234'
bcrypt.hash(password, 10, (err, encryptedPassowrd) => {
  // async callback
})

비밀번호 검증하기

// 동기
const password = '1234'
const encodedPassword = '$2a$10$tUUfk1E0jGr90ntHxl/wE.lzrVvAQfxJ7nRo3RYXi2XqJtlv2h.UW'
const same = bcrypt.compareSync(password, encodedPassword) // sync
// 비동기
const password = '1234'
const encodedPassword = '$2a$10$tUUfk1E0jGr90ntHxl/wE.lzrVvAQfxJ7nRo3RYXi2XqJtlv2h.UW'
bcrypt.compare(password, encodedPassword, (err, same) => {
  // async callback
})

Sync가 붙지 않으면 비동기 방식으로 콜백을 받아서 처리하게 끔 되어있습니다.
Sync가 붙으면 동기 방식으로 메서드 기능에 맞게 데이터를 리턴을 받게 끔 되어있습니다.

profile
To Infinity and Beyond

0개의 댓글