NestJS 비밀번호 암호화(bcrypt) 적용해보기

Peter·2021년 3월 22일
0
post-thumbnail

1. 패키지 설치

yarn add bcrypt
yarn add @types/bcrypt -D

2. cipher util 작성

import * as bcrypt from 'bcrypt';

/**
 * 입력받은 평문에 bcrypt 알고리즘을 적용합니다. (비밀번호 암호화)
 *
 * @param plainText
 */
export const hash = async (plainText: string): Promise<string> => {
  const saltOrRounds = 10;
  return await bcrypt.hash(plainText, saltOrRounds);
};

/**
 * 저장되어 있는 hashPassword 와 입력받은 password 를 비교합니다.
 *
 * @param password
 * @param hashPassword
 */
export const isHashValid = async (password, hashPassword): Promise<boolean> => {
  return await bcrypt.compare(password, hashPassword);
};

bcrypt.hash 함수로 인해 생성된 hash는 생성할 때마다 매번 다른 값이 생성됩니다.
saltOrRounds = 10 으로 설정하면 2^10번 해싱을 반복합니다.
bcrypt.hash 함수의 결과값에 round 수와 salt가 존재하기 때문에 같은 input값만 주어진다면 같은 결과값을 만들어낼 수 있고, 이 원리를 이용하여 구현한 것이 bcrypt.compare 입니다.

References

https://jusths.tistory.com/158
https://www.npmjs.com/package/bcrypt

0개의 댓글