9. EP35-38

Ann·2023년 1월 24일
0

IT 5분 잡학사전

목록 보기
10/11

2023.01.24

EP35 비밀번호는 어떻게 저장될까?

비밀번호 시스템 구현

잘못된 예

  1. 비밀번호를 그대로 DB에 저장
    -> 운영자, 개발자가 모두 비밀번호를 볼 수 있게됨
  2. DB자체를 암호화해서 아무도 볼 수 없게 만든 후 비밀번호를 저장
    = 회사에서 제공하는 key로 DB를 해제한 후 로그인
    -> 키를 잃어버리거나 해킹당할 수 있음

괜찮은 예

해시함수

해시함수 동작 규칙
  1. 동일한 입력값에 대해 동일한 출력값을 가진다 (일대일 대응관계)
  2. 입력값이 아주 조금만 바뀌어도 출력값은 엄청나게 바뀐다 (무작위성)
  3. 반대로 입력한다고 원래 값이 나오지 않는다

But, 해시함수의 레인보우 테이블 : 입력값과 출력값을 연결한 테이블 -> 해킹위험

=> 솔트 (아주 짧은 무작위 텍스트) 를 붙여서 해시함수에 통과시켜서 출력값을 얻음

EP36,37 객체 지향 프로그래밍이 뭐죠?

* 프로그래밍 패러다임 (programming paradigm)

프로그래머가 프로그래밍을 할때의 관점, 방식, 사고방식
절차 지향 프로그래밍, 객체 지향 프로그래밍, 함수형 프로그래밍

객체 지향 프로그래밍

class

const player_1 = {
	name: "Tony Stark",
    health: 80,
    skill: "IronMan",
};
const player_2 = {
	name: "Steve Rogers",
    health: 100,
    skill: "Captin America",
};
const player_3 = {
	name: "Peter Parker",
    health: 95,
    skill: "SpiderMan",
};

-> 중복이 계속되어 비효율적이고 오타를 낼 수도 있음 => class 선언

class Player {
	constructor(name, health, skill) {
    	this.name = name;
        this.health = health;
        this.skill = skill;
        this.xp = 0; //기본값이 0
    }
}

const tony = new Player("Tony Stark", 80, "IronMan");
const steve = new Player("Steve Rogers", 100, "Captin America")
const peter = new Player("Peter Parker", 95, "SpiderMan")

상속

class Human {
	constuctor(name){
    	this.name = name;
        this.arms = 2;
        this.legs = 2;
    }
}
class Teenager {
	constuctor(name){
    	this.name = name;
        this.arms = 2;
        this.legs = 2;
        this.emotional = true;
    }
    curse() {
    	return `(-_-)`;
    }
}
class Baby {
	constuctor(name){
    	this.name = name;
        this.arms = 2;
        this.legs = 2;
        this.cute = true;
    }
    cry() {
    	return `crying`;
    }
}

중복됨 => 상속

class Human {
	constuctor(name){
    	this.name = name;
        this.arms = 2;
        this.legs = 2;
    }
}
class Teenager extends Human {
	constuctor(name){
        this.emotional = true;
    }
    curse() {
    	return `(-_-)`;
    }
}
class Baby extends Human {
	constuctor(name){
        this.cute = true;
    }
    cry() {
    	return `crying`;
    }
}

EP38 함수형 프로그래밍이 뭐죠?

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

자바, 자바스크립트, 파이썬 등이 함수형 프로그래밍을 지원함

선언형 프로그래밍 = 원하는 결과값만 선언
ex) CSS
-> 결과 중심이므로 실수가 적고 이해하기 쉬움

명령형 프로그래밍 = 원하는 결과값에 어떻게 도달하는지 선언 ( 단계를 알려줌 )
-> 할일을 세세하게 지시할 수 있으나 개발자가 실수 하기 쉽고, 다른 개발자가 이해하기 어려울 수 있음

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

profile
안녕하세요

0개의 댓글