yarn add bcrypt
yarn add @types/bcrypt -D
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 입니다.
https://jusths.tistory.com/158
https://www.npmjs.com/package/bcrypt