✏️기록하는 즐거움
article thumbnail

 

🏷️ 오늘 읽은 범위: Ep.35 ~ Ep.38

 


 

💡 책에서 기억하고 싶은 내용을 써보세요.


EP.35 비밀번호는 어떻게 저장될까?

[🏷️202p-206p]

비밀번호 시스템의 잘못된 예 2가지

1. 비밀번호를 데이터베이스에 그대로 저장하는 것

비밀번호는 비밀번호 시스템을 구축한 사람도 볼 수 있어서는 안 된다.

2. 데이터베이스를 암호화하여 키를 사용해서 해제하는 것

데이터베이스 자체를 암호화해서 비밀번호를 저장하면 사용자는 회사에서 주는 키(key)로 데이터베이스를 해제한 후 입력한 비밀번호와 대조해서 맞으면 로그인을 할 수 있다.

하지만 키를 잃어버리거나 누군가 그 키를 훔치는 상황이 생길 수 있기 때문에 좋은 방법은 아니다.

 

괜찮은 비밀번호 시스템 - 해시 함수

해시 함수는 내가 입력한 값을 무작위 값으로 둔갑시켜 준다.

해시 함수 동작 규칙
1. 동일한 입력값에 대해 동일한 출력값을 가진다.
2. 입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀐다.
3. 반대로 입력한다고 해서 원래 값이 나오지 않는다.

 

레인보우 테이블(rainbow table)

레인보우 테이블이란 해시 함수가 변경한 값을 원래의 값과 연결한 표이다. 레인보우 테이블이 없어져도 위험에 노출되기 때문에 해시 함수도 안전한 것은 아니다.

 

솔트(salt)

솔트는 아주 작은 무작위 텍스트이다. 비밀번호를 솔트와 합쳐서 해시 함수에 통과시킴으로써 레인보우 테이블이 있어도 원래의 비밀번호를 찾을 수 없게 한다.

 

EP.36 객체 지향 프로그래밍이 뭐죠? ①

[🏷️207p-212p]

객체 지향 프로그래밍 - 클래스

객체 지향 프로그래밍에는 클래스(class)라는 개념이 존재한다.

클래스란 constructor(생성자)를 사용하여 객체에서 공통적인 부분을 정의해놓은 공장이다.

차를 만들어주는 공장이라고 하면 차의 바퀴, 핸들, 사이드 미러 등 재료들을 넣으면 같은 종류의 재료지만 각각 다른 차를 만들 수 있는 것과 비슷하다.

 

EP.37 객체 지향 프로그래밍이 뭐죠? ②

[🏷️213p-216p]

객체 지향 프로그래밍 - 상속

클래스 간에 중복되는 부분을 새로운 클래스로 만들어 기존 클래스들에 상속시키는 것으로 중복을 해결할 수 있다.

상속을 이용하면 기존 클래스들은 상속받은 클래스의 기본 속성은 다 가지면서도 자신만의 속성을 추가할 수 있다.

 

EP.38 함수형 프로그래밍이 뭐죠?

[🏷️217p-221p]

함수형 프로그래밍

버그가 발생하기 어려운 구조이다.

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

🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.


강의를 들으면서 로그인, 회원가입을 구현하는 부분을 진행했었는데 비밀번호는 어떻게 암호화해서 저장할 수 있는지 궁금했었다.

주어진 백엔드 코드에서 bcrypt 함수를 보았던 것 같은데 그게 salt의 키 유도 함수였다,,

평상시에 궁금했던 부분이 책에서 나와서 반갑기도 하고, 더 관심있게 읽을 수 있었다.

 

🔍 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.


역상저항성
해시 함수에서 입력값을 A, 출력값을 B라고 할 때 B값만 주어졌을 경우 A를 찾는 것이 계산적으로 불가능함을 의미한다.
프로그래밍 패러다임(programming paradigm)
프로그래머가 프로그래밍을 할 때의 관점, 방식 등을 말한다.
프로그래밍을 하는 사고의 틀 정도로 생각할 수 있다. 프로그래밍 언어는 프로그래밍 패러다임을 하나 또는 하나 이상 지원한다.
ex. 절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍 등
선언형 프로그래밍 vs 명령형 프로그래밍
선언형 프로그래밍 명령형 프로그래밍
원하는 결괏값을 선언한다. 원하는 결괏값에 어떻게 도달하는지 선언한다.
ex. BLT 샌드위치를 만들어줘! ex. 토스트를 만드는 과정을 단계별로 선언한다.
ex. CSS의 스타일 선언, Javascript의 내장 객체 메서드 사용 ex. Javascript의 내장 객체 메서드
profile

✏️기록하는 즐거움

@nor_coding

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!