개발자 99% 커뮤니티에서 수다 떨어요!
< 해시함수의 3가지 규칙 >
동일한 입력값에 대해 동일한 출력값을 가진다
입력값이 아주 살짝만 바뀌어도 출력값은 엄청나게 크게 바뀐다
-> 무작위성을 갖는다
반대로 입력한다고 해서 원래 값이 나오지 않는다
-> 한 쪽 방향으로만 설계된 함수
레인보우테이블(Rainbow table)
: 해시함수가 변경한 값을 원래의 값과 연결한 표
솔트(Salt)
: 아주 작은 무작위 텍스트
-> 비밀번호를 솔트와 합쳐 해시함수에 통과시키면 레인보우 테이블이 있어도 원래 비밀번호를 찾을 수 없다! 비밀번호를 저장하는 최강의 방법
프로그래밍 패러다임(Programming paradigm)
: 프로그래머가 프로그래밍을 할 때의 관점, 방식 등을 뜻함, 프로그래밍을 하는 사고의 틀
-> 프로그래밍 언어는 프로그래밍 패러다임을 하나 또는 하나 이상 지원
ex) 절차지향 프로그래밍, 객체지향 프로그래밍, 함수형 프로그래밍
상속
코드의 효율성을 높여주는 객체지형 프로그래밍 개념 중 하나
기본 속성을 가지면서 각각 다른 속성을 추가할 수 있게하여 중복을 해결해줌
함수형 프로그래밍
프로그래밍 패러다임 중 하나
버그가 발생하기 어려운 구조
선언형 프로그래밍
원하는 결과값을 선언
결과 중심으로 코드를 작성하여 실수가 적음
동료가 코드를 이해하기 쉬움
명령형 프로그래밍
원하는 결과값에 어떻게 도달하는지 선언
세세하게 지시할 수 있는 대신 개발자가 실수하기 쉬움
동료가 코드를 이해하기 어려움
절차지향과 객체지향에 대해서는 알고 있었는데 프로그래밍 패러다임에 대해서는 처음 접했다.
책에서 간단히 얘기해줬지만 따로 더 알아봐야겠다. 그리고 비밀번호를 저장하는 최고의 방법으로 솔트와 비밀번호를 섞어 해시함수에 넣는 것이란걸 알았고, 선언형 프로그래밍과 명령형 프로그래밍의 차이를 확실히 알게 되었다. 이번 독서도 유익했다! 머리를 깨웠으니 이제 코딩하러 가야겠다...