Node.js & TypeScript

Bcrypt를 활용해서 비밀번호를 암호화 하기

martinooo 2022. 3. 15. 15:39

비밀번호 암호화 하는 이유?

사용자의 비밀번호를 데이터베이스에 저장할 때 비밀번호를 그대로 저장하게 되면 매우 위험하다.

만약 데이터베이스가 해커들에게 털리면 사용자의 개인정보 & 비밀번호가 그대로 노출되기 때문이다. 

따라서 사용자들의 비밀번호를 해싱 알고리즘을 통해서 안전하게 데이터베이스에 저장하는이유다.

 

그래서 Bcrypt 사용하는 이유다. 

Bcrypt란?

웹 혹은 앱등등 개발을 할때 보안은 가장 기본적으로 수행되어야 할 요소입니다.

비밀번호를 그대로 DB에 저장을 한다면 해킹당할 위험이 있습니다. 

이를 방지하고자 Bcrypt모듈을 활용합니다. 

Bcrypt는 단방향 해시 함수를 이용한 모듈로써 salt 라는 개념을 사용합니다. Salt라는 값과 해시된 비밀번호를 합쳐서 

DB에 암호화 하여 저장을 합니다. 그래서 해커들이 비밀번호를 찾는데 더욱 어렵게 만듭니다.

 

설칭 방법은 

npm install bcrypt 

 

전체적인 메커니즘은?

saltRounds:
$10 은 10 round 를 의미하며, cost 정보를 의미한다. 이게 클 수록 연산의 cost 가 증가하는 것이다

bcrypt.genSalt(saltRounds, callback) 메소드를 활용해서 salt 값을 생성하고 생성된 salt 값은 콜백 함수의 인자로 
넘어가게 된다 salt값과 password를 bcrypt.hash(myPlaintextPassword, salt, callback) 메소드의 인자로 넘겨주고 
콜백함수의 인자로 넘어오는 hash값을 사용자 비밀번호로 넣어주면 된다. 

 

콘솔에 찍힌 hash 비밀번호를 쓰고있는 db에 사용자 비밀호로 넣어주면 끝!!