Back-End

[Node.js] 암호를 해시화 시켜보자

hyeeoooook 2025. 12. 1. 21:38

저번 포스팅에서 express()에 이어서 이번엔 npm 라이브러리중 하나인 bcrypt에 대해서 알아보고자 한다.

 

로그인을 구현하다가 처음엔 Localsession을 사용하고, 사용자의 암호가 이렇게 관리가 되면 누구든지 암호를 확인이 가능하겠다라는 생각이 들었다.

때문에 어떻게하면 회원가입에서 가져온 유저정보를 암호화시켜서 관리할 수 있을까 고민하고 검색중 bycript에 다다르게 되었다.

 

일단 내가 현재 사용하고 있는 구조는 HTML,CSS - Node.js - SQLite 이다.

  

회원가입에서 받아온 데이터값을 SQLite에 저장하고, 이를 Node.js에서 참조하여 로그인을 하는 형식이다.

 

대충 알테니 bcrypt를 설치하는 방법부터 시작하겠다.


설치법

기존 프로젝트의 폴더에서 cmd창을 연다. VSCode는 컨트롤 + ` 누르면 켜진다.

원하는 폴더에 install 해준다.

 

성공적으로 완료 되었다면 added 3 packages im ?s 가 뜰것이다.

 

모두 정상적으로 설치가 완료되었나 확인해보기 위해선 해당폴더에 package.json 파일을 찾아 열어보아라

위 사진과 같이 bcrypt 파일이 잘 설치가 되어있으면 된다.


예제 코드

위 예제 코드는 비밀번호 12345678을 받아 해시하는 과정이다.

 

이대로 node 파일명.js 를 실행하게 된다면 true 값이 반환 될 것이다.

그리고 아래는console.log(hashed)를 마지막단락에 추가했을때의 결과 값이다.

 

해쉬화된 hased의 값이 출력되는것을 볼수가 있다.

이렇듯 무작위적으로 해쉬를 계속 생성한다. 직접 예제에 console.log를 쳐서 두번, 세번 반복해보아라 지속적으로 다른 해시값이 나오는걸 확인 할 수가 있다. 

이건 해시의 특징이고, 이는 단방향 암호임을 보여주는 예제이기도 하다.

 

즉, 여기서 시스템은 사용자의 12345678을 저장하는것이 아닌 12345678에 대한 해시값을 저장하고, 나중에 12345678이라는 패스워드가 입력되었을때 이것을 해시화하고 동일하다면 true값을 도출하는것이다.  

 


설치간에 오류사항

설치중에 오류가 났고, 이를 해결한 방안들이다. 구글링을 통해서 확인이 가능했다.

 

 레퍼런스 에러이다.

1. 만약 본인이 require을 처음에 썻다면 뜰 수 있다. 아래처럼 import bcrypt form 'bcrypt';를 사용하자. 

2. pakage.json에 "type": "module"을 선언해주자.

 

다음 포스팅에선 해당 개념을 가지고 회원가입을 진행하는 시스템을 구축할 것이다.