- Crypto
- Bycrpt
Node.js 내장 모듈. 해쉬 함수를 이용하여 암호화하는 기능 제공
단방향 암호화이기 때문에, 복호화가 불가능하다
const crypto = require('crypto'); // bcrypt 모듈 : 암호화
const salt = crypto.randomBytes(10).toString('base64');
const hashedPassword = crypto.pbkdf2Sync(password, salt, 10000, 10, 'sha512').toString('base64');
비밀번호를 해쉬 하기 위한 라이브러리. 주로 비밀번호를 안전하게 해싱하고 저장하는데 사용된다.
양방향 암호화이기 때문에, 복호화가 가능하다
const bcrypt = require('bcrypt'); // bcrypt 모듈 : 암호화
const salt = bcrypt.genSaltSync(saltRounds);
const hashedPassword = bcrypt.hashSync(password, salt);
crypto는 개발자가 직접 알고리즘을 선택할 수 있지만, bcrypt는 특별히 비밀번호 해싱에 최적화된 알고리즘인 blowfish를 사용하고 있다.
crypto는 단방향 암호화이기 때문에, 비밀번호를 수정하기 위해 salt도 함께 저장해줘야 하지만, bcypt는 양방향 암호화이므로 복호화할 수 있다.