개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
레인보우 테이블 해킹 위험을 방지를 위해 솔트(salt)를 이용해 해시함수를 사용한다. 솔트는 비밀번호와 합쳐져 해시 함수를 통과함으로써 비밀번호를 안전하게 보호한다.
선언형 프로그래밍은 결과 값을 선언하는 것이고(like CSS), 명령형 프로그래밍은 원하는 결과값에 어떻게 도달하는지를 선언하는 것이다(like 함수 구현).
함수형 프로그래밍은 함수 중심으로 코드를 작성하는 방식으로 선언형 프로그래밍 콘셉트를 유지하며, 버그가 발생하기 어려운 구조라서 개발자에게 매우 유용하다.
TIL (Today I Learned) 날짜
2023. 09. 05
오늘 읽은 범위
EP35 비밀번호는 어떻게 저장될까?
EP36 객체 지향 프로그래밍이 뭐죠? ①
EP37 객체 지향 프로그램이 뭐죠? ②
EP38 함수형 프로그래밍이 뭐죠?
책에서 기억하고 싶은 내용을 써보세요.
해시함수
입력값을 무작위값으로 변경해서 리턴함 → 비밀번호 시스템 구현에 적합
동일한 입력값에 대해 동일한 출력값을 가진다
입력값이 바뀌어도 출력값은 완전 다르게 바뀐다
반대로 입력한다고 해서 원래 값이 나오지 않는다. → 한쪽 방향으로 설계된 함수
레인보우 테이블 : 해시 함수가 변경한 값을 원래 값과 연결한 표 → 알려지면 위험해짐
솔트(Salt) : 무작위 테스트 → 비밀번호와 솔트를 합쳐서 해시 함수에 통과시키면 원래 비밀번호를 레인보우 테이블에서 찾을 수 없음!
프로그래밍 패러다임(Programming Paradigm)
프로그래머가 프로그래밍을 할 때의 관점, 방식, 사고의 틀
절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍
객체 지향 프로그래밍
코드의 효율성을 높이는 여러 요소를 사용
클래스 : 속성은 같지만 데이터는 다른 객체를 생성하기 위한 개념
상속 : 클래스의 기본 속성을 다 가지면서도 자신 만의 속성을 가져갈 수 있도록 하는 개념
함수형 프로그래밍
버그가 발생하기 어려운 구조라서 개발자에게 매우 유용
함수 중심으로 코드를 적는 방식으로 선언형 프로그래밍 콘셉트를 유지함
선언형 프로그래밍
원하는 결과값을 선언
결과 중심으로 코드를 작성하기 때문에 실수가 적고 동료가 이해하기 쉬움
ex) replaceAll함수 이용하기
→ 모든 선언형 프로그래밍은 명령형 프로그래밍 위에 쓴다고 할 수 있음
명령형 프로그래밍
원하는 결과값에 어떻게 도달하는지 선언
할 일을 세세하게 지시할 수 있지만, 개발자가 실수하기 쉽고 동료가 이해하기 어려움
ex) replaceAll 함수 구현하기
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
막연히 알고 있었던 프로그래밍 기법(?)을 패러다임이라고 칭하는 것을 알게됨
더 알아보기
레인보우 테이블(rainbow table)
해시 함수를 사용하여 변환 가능한 모든 해시 값을 저장시켜 놓은 표
[솔트(salt)](https://en.wikipedia.org/wiki/Salt_(cryptography))
[객체 지향 프로그래밍](https://jongminfire.dev/객체지향-프로그래밍이란)