본문 바로가기

내일배움캠프 Node 4기/TIL

내배캠 12/7 TIL

Hash와 Bcrypt

- Hash brown을 모르는 사람이 있을까? 해쉬브라운을 만드는 과정을 보면 감자를 다져서 튀기는 것이다.

그 개념으로 이해를 하면 된다. 암호(Plain text)를 잘게 다져버려서 반죽하면 원형을 모르게 hashed가 되는것.

 

Salt 라는 개념도 뭐.. 쉽게 이해하자면 hash brown에 소금을 치는 강도라고 이해하면 되겠다.

소금을 많이 칠수록 먹으려고 시도도 못할만큼 짜게 되기 때문에...

 

그리고 더 중요한것. 감자를 hash brown으로 만들순 있지만, 반대로 hash brown을 감자로 되돌리기는

사실상 불가능하다. 즉, 암호화는 되지만 복호화는 불가능하다는것. 이게 암호와 보안에서 가장 기본적이지만 중요한 개념이다. 다만 checkpw 혹은 compare라는 함수 기능으로 로그인 구현은 가능하다.

 

그런데 내가 궁금해했던거는, 만약 아이디는 다르지만 비밀번호를 같게 설정해버리면 어떡하지? 라는 물음이었다. 왜냐햐면 일정한 값에 해시로 생성되는 값은 일정하기 때문이다. 

 

그러나 Salt의 개념을 알고 있다면, 서로 다른 두 계정의 정보는 다른 DB에 저장이 될 것이고, 또한 서버에서 다른 변수로 저장이 되기 때문에 해시값이 다르게 나올 것이다. (적어도 현 프로젝트에서는) 

 

튜터님께 물어봤더니, 해싱으로 생성된 값을 다시 해싱하는 방법, 혹은 유저의 index를 불러와 그것을 Salt에 집어넣어 hash값을 생성하는 등의 방법이 있다고 하셨다.

 

특히나 백엔드는 보안도 조금 알아야 할것 같은데, 확실히 재미는 있는것 같다.

 

 

DB 정규화

 

- 정규화는 영화로 Normalization인데, 어원으로 이해하면 '정돈' 정도로 이해하면 되겠다.

DB에서 Table을 만들어서 자료를 적재하는 와중에 컬럼을 여러개 늘려서 이정보 저정보 다 넣으면 편하겠지만

그러면 쿼리문 작성이 복잡해지고, 난잡해지기 때문에 정규화 작업을 통해 정리하는 과정을 실시하는 것이다.

 

사실 처음 접해본 용어기 때문에 이해하는데 좀 시간이 걸렸다.

 

1정규화 -> 같은 열에 값을 두개 넣는다거나 하는것을 배제하고, 1:1의 관계를 유지한다.

2정규화 -> 부분 종속된 컬럼을 따로 빼서 table을 만드는것

3정규화 -> 독립적인 컬럼을 따로 빼서 table을 만드는것

 

정도로 나는 이해하고 있다. 

 

4정규화나 5정규화, BCNF 정규화 등도 있지만

현업에서는 거의 3정규화 정도만 한다고... 

 

추후 DB관련해 공부를 더 해볼 계획이다.

'내일배움캠프 Node 4기 > TIL' 카테고리의 다른 글

내배캠 12/9 TIL  (0) 2022.12.13
내배캠 12/8 TIL  (0) 2022.12.08
내배캠 12/6 TIL  (0) 2022.12.07
내배캠 12/5 TIL  (0) 2022.12.06
내배캠 12/3 TIL  (0) 2022.12.05