개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
비밀번호는 해시 함수와 솔트를 조합해서 저장해야 한다
프로그래밍 패러다임 - 절차 지향, 객체 지향(클래스와 상속), 함수형 프로그래밍
선언형 프로그래밍 - 실수가 적다, 동료가 코드를 이해하기 쉽다
TIL (Today I Learned) 날짜
2025. 01. 14
오늘 읽은 범위
에피소드 35 - 에피소드 38
책에서 기억하고 싶은 내용을 써보세요.
비밀번호 시스템의 잘못된 예
1. 비밀번호를 데이터베이스에 그대로 저장
2. 데이터베이스 자체를 암호화해서 키로 로그인
괜찮은 비밀번호 시스템의 예
1. 해시 함수
[동작법]
₁. 동일한 입력값에 대해 동일한 출력값
₂. 입력값이 살짝 바뀌면 출력값은 엄청 크게 바뀜
₃. 반대로 입력해도 원래 값이 나오지 않음
-레인보우 테이블(비밀책)이 있어서 털릴 수 있기에 해시 함수도 완벽하진 않음
2. 솔트: 작은 무작위 텍스트
비밀번호+솔트 → 해시함수에 통과시킴
레인보우 테이블이 있어도 원래 비밀번호를 찾을 수 없다
프로그래밍 패러다임: 프로그래머가 프로그래밍 할 때의 관점, 방식(사고의 틀)
프로그래밍 언어는 패러다임을 하나 또는 하나 이상을 지원함
- 절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍
객체 지향 프로그래밍
클래스(class): 속성은 같지만 데이터는 다른 녀석들을 위한 공장
상속: 기본이 되는 클래스를 나머지 클래스에 상속시켜서 중복 해결
함수형 프로그래밍: 버그가 발생하기 어려운 구조 - 자바, 자바스크립트, 파이썬 등
함수를 중심으로 코드를 적는 방식, 선언형 프로그래밍 컨셉 유지
선언형 프로그래밍: 원하는 결괏값을 선언
실수가 적다, 동료가 코드를 이해하기 쉽다
명령형 프로그래밍: 원하는 결과값에 어떻게 도달하는지 선언(단계를 다 알려줌)
할 일을 세세하게 지지할 수 있다
개발자가 실수하기 쉽다, 내가 쓴 코드를 동료가 이해하기 어렵다
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
내 비밀번호들 개발자가 다 알거라고 생각했는데 그게 아니었구나
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
절차 지향은 왜 설명이 없지
솔트는 해킹에 완벽한가? 비밀번호가 털리는 이유는 솔트 구조가 아니라서? 2단계 인증은 솔트로도 털릴 수 있으니까 만든건가?
오늘 읽은 다른사람의 TIL