본문 바로가기

독서/IT

[IT 5분 잡학사전] 노개북 챌린지 12일차 TIL

2023-01-24 TIL 에피소드 35~38

  • 세줄 요약
해시함수를 사용한 비밀번호 시스템과 레인보우 테이블 그리고 무작위 텍스트인 솔트, 프로그래밍 패러다임, 객체지향프로그래밍의 클래스와 상속, 결과 중심의 선언형 프로그래밍, 할 일을 세세하게 지시하는 명령형 프로그래밍, 함수 중심으로 코드를 적으며 선언형 프로그래밍의 컨셉을 유지하는 함수형 프로그래밍에 대해 알 수 있다.

 

 

  • 책에서 기억하고 싶은 내용
해시함수를 사용한 비밀번호 시스템(35. 비밀번호는 어떻게 저장될까?)
- 해시함수는 비밀번호 데이터베이스 앞에 살고 있는 마법사 같은 녀석인데, 사용자가 입력한 값을 무작위 값으로 둔갑시켜 준다.
- 해시함수는 동일한 입력값에 대해 동일한 출력값을 가진다. (사용자가 입력한 값과 대응되는 무작위 값은 계속 유지됨)
- 해시함수는 입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀐다.(무작위성)
- 해시함수는 반대로 입력한다고 해서 원래 값이 나오지 않는다.

해시함수도 완벽하진 않다, 레인보우 테이블
- 레인보우 테이블은 해시함수가 변경한 값을 원래의 값과 연결한 표이다.
- 해시함수를 통과한 값은 레인보우 테이블에서 찾아보면 원래 값을 알 수 있기 때문에 털리면 위험해진다.

최종 병기, 무작위 텍스트 솔트(salt)
- 솔트는 아주 조그마한 무작위 텍스트
- 비밀번호를 무작위 텍스트인 솔트와 합쳐서 해시함수에 통과시킨다. > 레인보우 테이블이 있어도 원래 비밀번호를 찾을 수 없음

프로그래밍 패러다임(programming paradigm)은 프로그래머가 프로그래밍을 할 때의 관점, 방식을 말한다.(36. 객체 지향 프로그래밍이 뭐죠?)
- 프로그래밍을 하는 사고의 틀
- 대표적인 프로그래밍 패러다임으로 절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍이 있다.

객체 지향 프로그래밍의 클래스(class) 개념
- 클래스(공장)는 속성은 같지만 데이터는 다른 녀석들을 위한 공장 같은 것
- 장점: 코드를 손으로 직접 입력하는 양도 줄고, 속성도 오타가 나지 않도록 피할 수 있다
- 속성(재료)가 들어가는 곳은 constructor()
- 클래스에 속성을 넣는 코드는 new 클래스명()

코드 중복을 해결해주는 객체 지향 프로그래밍의 상속(37. 객체 지향 프로그래밍이 뭐죠?)
- class A extends B
- 성인을 상속받은 Teenager의 클래스 : class Teenager extends Human

선언형 프로그래밍은 원하는 결과값을 선언한다.(38. 함수형 프로그래밍이 뭐죠?)
- 대표적인 예: CSS
  - body { background-color: pink }
- 자바스크립트의 replaceAll()
- 장점: 결과 중심으로 코드를 작성하니 실수도 적고, 동료가 코드를 이해하기도 쉬움

명령형 프로그래밍은 원하는 결과값에 어떻게 도달하는지 선언한다.
- 어떻게 해야 하는지를 하나씩 알려주며, 할 일을 세세하게 지시할 수 있음
- 단점: 개발자가 실수하기 쉽고, 내가 작성한 코드를 동료가 이해하기 어려울 수 있다

함수형 프로그래밍은 함수 중심으로 코드를 적는 방식으로 선언형 프로그래밍 콘셉트를 유지한다.

 

 

  • 오늘 읽은 소감은?
객체 지향 프로그래밍과 함수형 프로그래밍은 평소에 정말 많이 들어왔었는데 오늘에서야 개념을 정확히 알게 되었다! 속이 다 시원하다!

 

  • 떠오르는 생각을 가볍게 적어보세요

없음

 

 

  • 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요
비밀번호 시스템의 무작위 텍스트인 솔트