비밀번호 암호화 (Bcrypt)

윤성준·2023년 8월 14일
0

first react project

목록 보기
4/17

암호화의 종류에는 여러가지가 있다.

SHA-2(Secure Hash Algorithm 2)

PBKDF2

ISO-27001 보안 규정을 준수해야하는 상황이면 PBKDF2를 사용

Bcrypt

일반적으로 규정을 준수해야할 상황이 아니면 구현이 쉽고 비교적 강력한 Bcrypt를 사용

Scrypt

보안 시스템을 구현하는데 많은 비용을 투자할 수 있다면, Scrpyt를 사용

나는 Bcrypt를 사용할 것이다.

Bcrypt

1999년에 publish 된 password-hashing function 이다.
Blowfish 암호를 기반으로 설계된 암호화 함수이며 현재 까지 사용중인 가장 강력한 해시 매커니즘 중 하나이다.

bcrypt.hashpw(password, bcrypt.gensalt())

Bcrypt 모듈 사용법

npm install bcrypt

비밀번호 암호화 하기

hash 는 동기, hashSync 는 비동기 방식
파라미터로 넣은 숫자 12는 암호화에 사용되는 Salt 로, 값이 높을 수록 암호화 연산이 증가한다.
하지만 암호화하는데에는 속도가 느려진다.

server/util/password.util.js

const bcrypt = require('bcrypt');

//hash password 생성
const getHash =  (password) => {
    return bcrypt.hashSync(password, 12);
}

//원래 비밀번호와 hash 처리된 비밀번호를 검증
const compare = (originPassword, hashedPassword) => {
    return bcrypt.compareSync(originPassword, hashedPassword);
}
module.exports = {
    getHash, compare
}
profile
반갑습니다

0개의 댓글