728x90

 

DB가 해킹되면 비밀번호가 노출되기 때문에 암호화가 필요하다

암호화는 양방향과 단방향이 있다.

양방향의 경우 복호화가 가능하므로 유추가 가능하다.

그래서 단방향을 쓰는데, 단방향도 여러가지 경우의 수가 유추가능해지므로, 무차별 대입 공격으로 해킹이 가능하다. (레인보우테이블)

그래서 salt라는 양념을 추가하고 여러번 암호화를 돌려서 이를 방지한다.

대표적인 라이브러리가 Bcrypt이다.

알고림은 암호화에 사용된 자체 알고리즘이고, 계산비용은 몇번 돌렸는지, salt는 자체적으로 넣은 랜덤한 값이고, hash값은 이를통해 나온 결과값이다.

이 모든게 합쳐져 암호화된 비밀번호로 DB에 저장되게 된다.

 

1234를 bcrypt로 저장한 모습

 

- bcrypt 추가 명령어

yarn add bcrypt

 

- TypeScript 사용시에는 아래도 추가 필요

yarn add --dev @types/bcrypt

 

- 사용 방법

import * as bcrypt from 'bcrypt';

const hashedPw = await bcrypt.hash(password, 10); // solt 숨기기

const isPwMatch = await bcrypt.compare(inputPw, DBPw);

 

728x90

'코딩 > 기타' 카테고리의 다른 글

절차적인 설계 vs 객체지향 설  (1) 2024.09.05
마이크로서비스  (0) 2024.03.28
스크랩핑 (cheerio)  (0) 2024.03.15
CLI  (0) 2024.02.29
문법  (0) 2024.02.24

+ Recent posts