2024.01.02 TIL

Oneik·2024년 1월 2일
0
post-thumbnail

📕 오늘 학습 내용

  • Crypto
  • Bycrpt

Crypto

Node.js 내장 모듈. 해쉬 함수를 이용하여 암호화하는 기능 제공

단방향 암호화이기 때문에, 복호화가 불가능하다

Crypto 모듈을 이용하여 비밀번호 암호화하기

const crypto = require('crypto'); // bcrypt 모듈 : 암호화

const salt = crypto.randomBytes(10).toString('base64');
const hashedPassword = crypto.pbkdf2Sync(password, salt, 10000, 10, 'sha512').toString('base64');
  • 길이가 10인 무작위 바이트 생성하고 base64로 인코딩한 후, salt 생성
  • pbkdf2 메소드를 이용하여 비밀번호 해싱

Bcrypt

비밀번호를 해쉬 하기 위한 라이브러리. 주로 비밀번호를 안전하게 해싱하고 저장하는데 사용된다.

양방향 암호화이기 때문에, 복호화가 가능하다

Bcrypt 모듈을 이용하여 비밀번호 암호화하기

const bcrypt = require('bcrypt'); // bcrypt 모듈 : 암호화

const salt = bcrypt.genSaltSync(saltRounds);
const hashedPassword = bcrypt.hashSync(password, salt);
  • 비동기 방식을 추천하나 비동기에 대해 배우지 않았음으로 동기 방식으로 작성
  • 안전한 해시 알고리즘인 blowfish를

Crypto vs Bcrypt

  • crypto는 개발자가 직접 알고리즘을 선택할 수 있지만, bcrypt는 특별히 비밀번호 해싱에 최적화된 알고리즘인 blowfish를 사용하고 있다.

  • crypto는 단방향 암호화이기 때문에, 비밀번호를 수정하기 위해 salt도 함께 저장해줘야 하지만, bcypt는 양방향 암호화이므로 복호화할 수 있다.

profile
초보 개발자의 블로그입니다

0개의 댓글

관련 채용 정보