암호화의 종류에는 여러가지가 있다.
ISO-27001 보안 규정을 준수해야하는 상황이면 PBKDF2를 사용
일반적으로 규정을 준수해야할 상황이 아니면 구현이 쉽고 비교적 강력한 Bcrypt를 사용
보안 시스템을 구현하는데 많은 비용을 투자할 수 있다면, Scrpyt를 사용
나는 Bcrypt를 사용할 것이다.
1999년에 publish 된 password-hashing function 이다.
Blowfish 암호를 기반으로 설계된 암호화 함수이며 현재 까지 사용중인 가장 강력한 해시 매커니즘 중 하나이다.
bcrypt.hashpw(password, bcrypt.gensalt())
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
}