개발자 99% 커뮤니티에서 수다 떨어요!
비밀번호를 암호화하기 위해서는, 해시함수를 사용해야 한다.
프로그래밍 패러다임은, 프로그래밍을 하는 사고의 틀로
객체 지향 프로그래밍, 절차 지향 프로그래밍, 함수형 프로그래밍이 있다.
2023.01.24
Episode 35 ~ 38
비밀번호 시스템의 잘못된 예 2가지
비밀번호를 데이터 베이스에 그대로 저장하는것
키를 사용하는 방법 → 키 분실 위험이 있음
그럼 어떻게 저장해야 할까? 해시함수를 사용한다.
해시함수 : 입력한 값을 무작위 값으로 둔갑시켜 준다.
해시함수의 규칙
동일한 입력값에 대해 동일한 출력값을 가진다.
무작위성이 커서, 입력값이 조금만 바뀌어도 출력값이 크게 바뀐다.
반대로 입력한다고 해서 원래 값이 나오지 않는다.
레인보우 테이블(rainbow table) : 해시 함수가 변경한 값을 원래의 값과 연결한 표
솔트(salt) : 무작위 텍스트.
입력값(비밀번호를) 솔트와 합쳐서 해시함수에 통과시키면,
레인보우 테이블이있어도 원래 비밀번호를 찾을 수 없게 된다.
클래스(Class) : 속성은 같지만 데이터는 다른 객체들을 위한 일종의 틀(template)
상속(Extends) : 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것 ➰ 심즈
버그가 발생하기 어려운 구조라 개발자에게 매우 유용하다.
아래 2가지 유형이 있다.
선언형 : 원하는 결과값을 선언
명령형 : 원하는 결괏값에 도달하는 과정(단계)을 선언
객체지향 프로그래밍은 예제를 보자마자 딱! 이해가 됐는데, 함수형 프로그래밍은 여전히 뭔지 감이 잘 잡히지 않는다. 그런데 다른 분들의 TIL을 보니 나와 비슷한 분들이 그래도 꽤 있는 것 같아서 뭔가 반가우면서도 묘~한 안도감(😂)이 들었다. 최근에는 함수형 프로그래밍을 많이 사용한다는 데, 확실히 이해하고 넘어가야 겠다.
그리고 오늘 번아웃에 대처하는 자세에 대해서 몇 가지 팁을 주었는데 과연 내가.. 번아웃이 올만큼 열심히 하고 있나? 하는 의문이 들었다. 꼭 번아웃이 와서(?) 주신 팁들을 사용해볼 수 있도록 해야겠다ㅋㅋㅋ
함수형 프로그래밍 작성하기