1. 익명 함수란?

익명 함수는 이름이 없는 함수를 말한다.

함수 자체가 식이기 때문에, 변수에 할당할 수 있다.

 

익명함수는 다음과 같은 예제로 사용 할 수있다.

let add = function(a, b) {
    return a+b;
}

let sum = add(10, 20);

console.log(sum) // 30

2. 그렇다면 화살표 표기법은 무엇인가?

화살표 표기법은 위의 익명함수를 좀 더 간단하게 만들어서 사용할 수 있다.

let add = (a, b) => a + b;

let sum = add(10, 20);

console.log(sum); // 30

화살표 함수는 위처럼 사용하는데, 여러 조건이 있다.

  • 매개 변수가 하나일 경우에는 매개변수 괄호를 생략 가능
  • 매개 변수가 없을 경우는 매개변수 괄호가 무조건 있어야 함
  • 본문의 줄이 한줄일 경우에는 몸통 {}생략이 가능하며, return문도 생략이 가능함
  • return할 값이 만약 객체이면 소괄호가 있어야하며, 몸통은 ({})형태를 가짐
  • 기본적으로 화살표 함수는 (매개변수) => {본문}의 형태

1) static

  • position의 기본값, 따로 설정을 안해주어도 기본적으로 static임
  • static인 상태에서는 top, left, ...와 같은 것을 사용해도 움직여지지 않음

2) relative

  • 원래의 공간에서 부모 박스에 따라 상대적으로 움직임

3) absolute

  • 근접한 부모중에 기본값이 스태틱이 아닌 부모의 기준에서 움직이게 됨
  • relative, absolute, fixed인 태그가 없다면 가장 위의 태그(body)가 기준이 됨

4) sticky

  • 부모의 박스에 기준에 따라 움직여짐
  • top, left와 같은 포지션을 꼭 지정해줘야함
  • 스크롤링이 될 때 fixed처럼 고정이 됨

5) fixed

  • 들어있는 박스랑 상관없이 viewport에 의해 움직여짐
  • 브라우저에서 보여지는 viewport에서 포지션변경이 일어남
  • 즉, body기준에서 움직여진다라고 보면됨

<암호>

1) 암호의 정의

  • 암호란 두 사람이 안전하지 않는 채널을 통하여, 정보를 주고받더라도 제3자는 이 정보의 내용을 알 수 없도록 하는 것

 

2) 암호에서 많이 쓰이는 용어들

2-1) 암호문

  • 제3자가 보더라도 그 내용을 알 수 없도록 변환된 메세지를 말함

2-2) 평문

  • 볌환되기 전인 원래의 메세지를 평문이라 함

2-3) 암호화

  • 평문을 암호문으로 변환하는 것을 암호화라고 함

 

<암호의 역사>

1) 고대의 암호

  • 고대의 암호에는 전치법과 치환법을 사용하였음

1-1) 전치법

  • 평문에 있는 문자들의 순서를 바꿈으로써 암호화하는 기법을 말함
  • 평문을 두 문자씩 잘라서, 섞는 방법을 말함
  • 즉, 암호문에 사용되는 문자들이 그대로 이용되며, 단지 위치만 바뀜

1-1-1) 전치법의 예시

  • 예를 들어, 암호알고리즘을 두 글자씩 잘라서 바꿔서 섞으면, 호암고알즘리 ← 이 처럼 변경이 됨

1-1-2) 전치법의 군사용으로 사용하던 암호 방식

  • 군사용으로 사용하던 암호 방식이 있는데, 가늘고 긴 종이를 두른 후 여기에 전달하고자 하는 문장을 봉의 길이 방향으로 씀으로써 암호화를 했음
  • 봉의 굵기가 키(Key)가 됨

1-2) 치환법

  • 평문의 문자들을 다른 문자로 치환함으로써 암호화 하는 기법
  • 치환 법에는 크게 2가지가 존재함
    • 시저 암호, 시프트 암호

1-2-1) 시저 암호

  • 알파벳 26글자를 알파벳 순서로 세 자씩 오른쪽 이동 시킨 뒤, 해당되는 글자로 치환하여 암호화를 함
  • CAESAR를 에시로 하면,
    • C를 3글자 이동하면 F로
    • A를 3글자 이동하면 D로
    • ... 이런식으로 변경을 함

1-2-2) 시프트 암호

  • 시저 암호를 일반화한 암호를 말함
  • 각 문자를 k번째 뒤 문자로 치환하는 방법
  • 여기서 k는 0부터 25까지의 정수 중 하나가 됨
  • k는 암호의 key가 됨
  • 예를 들어, k=5라면
    • A는 알파벳 순서로 5번째 뒤인 F로 치환
    • B는 알파벳 순서로 5번째 뒤인 G로 치환
    • ....이런식으로 변경

1-2-3) 시프트 암호의 단점

  • 경우의 수가 알파벳의 개수인 26가지밖에 없어, 26번만의 시도만으로 암호를 풀 수 있는 매우 취약한 방식

2) 근대 암호

  • 근대 암호에는 시프트 암호를 개선하여 새로운 치환법을 고안함
  • 비즈네르 암호라고 함

2-1) 비즈네르 암호

  • 여러개의 정수 값을 키로 이용함
  • 시프트 암호는 k(key)가 한개였지만, 그와 달리 비즈네르 암호는 여러개의 k(key)를 가짐
  • 예시
  • 다음과 같이 Key가 여러개 가지고, k번째 뒤에 문자로 치환됨
  • 길이가 m이면, 26^m개의 키를 가지가 되므로, 매우 안전함

2-2) 이 후의 근대암호

  • 일회성 암호체계 안전함을 증명하였고, 암호체계의 2가지 기본원칙인 혼돈과 확산 이론을 제시
  • 혼돈 : 평문과 암호문 사이의 상관관계를 숨기는 것을 말함
  • 확산 : 평문의 통계적 성격을 암호문 전반에 확산시켜 숨기는 역할을 말함

3) 현대 암호

  • 현대 암호에는 2가지가 변화함
  • 표준 암호 알고리즘과 공개키 암호 알고리즘

3-1) 표준 암호 알고리즘

  • 데이터 보호에 대한 필요성 증가
  • DES 대표적인 대칭키 암호 알고리즘가 등장
  • AES 암호 알고리즘이 나오기전까지 널리 이용됨

3-2) 공개 암호 알고리즘

  • 암호화와 복호와에 서로 다른 키를 사용
  • 이 개념을 이용하여, 소인수분해 문제에 기반을 둔 RSA 공개키 암호 알고리즘이 만들어짐

 

<대칭키 암호>

1) 대칭키 암호의 정의

  • 암호화와 복호화에 같은 키 하나를 사용하는 암호 방식

2) 대칭키 암호

  • 암호화와 복호화 속도가 빠르다는 장점
  • 하지만, 비밀키를 제3자에게 노출하지 않으면서, 송신자와 수신자와 나누어 가지기 어려운것이 단점

3) 대칭키 암호의 종류

  • 블록 암호, 스트림암호 두가지의 종류가 존재

3-1) 블록 암호

  • 암호문을 만들기 위해 평문을 고정된 크기의 블록을 나누어서, 각 블록마다 암호화 과정을 수행하여, 블록 단위로 암호문을 얻는 대칭키 암호 방식

3-2) 스트림 암호

  • 평문과 같은 길이의 키 스트림을 생성하여, 평문과 키를 비트 단위로 XOR하여 암호문을 얻는 대칭키 암호 방식

<공개키 암호>

1) 공개키 암호의 정의

  • 암호화와 복호화에 두 개의 서로 다른 키를 사용하는 암호 방식
  • 공개키 암호에서 사용하는 두개의 키를 공개키와 개인키라고 함

1-1) 공개키

  • 공개되어 있어서, 누구나 공개키를 이용하여 암호화가 가능함

1-2) 개인키

  • 아무에게도 공개하지 않고, 자신만 알고 있어야함
  • 오직 자신만 개인키를 이용하여 복호화를 할 수 있음

1-3) 공개키 암호의 단점

  • 대칭키 암호에 비해 속도가 느림
  • 데이터를 암호화할때는 대칭키 암호 방식을 선호

1-4) 공개키 암호는 언제 사용하는가?

  • 대칭키 암호의 비밀키를 교환할 때에 공개키 암호 방식을 사용

1-5) 공개키 암호의 예시 알고리즘

  • RSA 알고리즘
  • 타원곡선 암호 알고리즘

'보안' 카테고리의 다른 글

[보안] 기밀성, 무결성, 가용성  (0) 2022.05.14

정보 보호의 3가지 목표

기밀성

  • 허락되지 않은 자가 정보의 내용을 알 수 없도록 하는 것
  • 접근 권한이 없는 사람이 접근하지 못하도록 막는 것을 말함

무결성

  • 허락되지 않은자가 정보를 함부로 수정할 수 없도록 하는 것
  • 즉, 정보에 대한 수정권한이 없는자가 저장되어 있는 정보, 전달중인 정보를 변경하지 못하도록 막는 것을 말함

가용성

  • 허락된 자가 정보에 접근하고자 할 때 이것이 방해 받지 않도록 하는 것
  • 정보에 접근권한이 있는 자는 필요할 때 언제든지 정보를 사용할 수 있어야 함

그 외의 목표들

 

1. 부인 방지

  • 정보에 관여한자가 부인하지 못하도록 하는 것

2. 인증

  • 어떤 실체가 정말 주장하는 실체가 맞는지 확인할 수 있고, 신뢰할 수 있는 것
    • 실체 : 어떤 정보 자체일 수도 있고, 정보를 이용하는 사용자일 수도있음

3. 접근제어

  • 정보에 대해 허락된 접근만 허용하고, 그 외의 접근은 허용하지 않는 것
  • 접근권한이 있는 자는 정보에 대한 접근을 허용, 접근권한이 없는자는 정보에 접근하지 못하도록 막는 것

'보안' 카테고리의 다른 글

[보안] 암호의 역사  (0) 2022.05.14

1) 정의

  • element를 css 방식으로 검색할수 있는 방법

2) 사용 방법

  • id는 #, class는 . 으로 구분하여 element를 가져온다.

3) 예제 코드

<HTML Code>

<h1 class="myclass1">Hello</h1>
<h1 id="myclass2">Hello</h1>

<JS Code>

const el1 = document.querySelector(".myclass1");
const el2 = document.querySelector("#myclass2");

참조 : https://developer.mozilla.org/ko/docs/Web/API/Document/querySelector

IT업계에서 일하다 보면, 흔히들 인프라아키텍처에 대한 정의를 많이 얘기한다.

이번 글에서는 인프라와 아키텍처의 정의를 알아보려 한다.

 

1) 인프라란 무엇일까?

인프라는 우리말로 하면 '기반', '지탱'이라는 뜻을 가지고 있다. 인프라라는 말은 여러 곳에서 쓰인다. 예를 들면, '우리나라 지하철은 인프라가 너무 복잡해' 이런 식으로 말하기도 하는데, 지하철 구조가 너무 복잡하다는 뜻이다. 그러면, IT에서 인프라라고 얘기를 하면, IT 환경을 운영하고 관리하는 데 필요한 구성 요소라고 생각하면 된다.

 

2) 그렇다면 인프라에서의 아키텍처는 무엇일까?

아키텍처는 IT 인프라의 구조를 말한다. IT 환경이 어떤 식으로 운영이 되고, 구축이 어떻게 되었는지를 뜻한다.
예를 들면, 여러 대의 컴퓨터를 조합해서 하나의 구성체계를 만든다던지.. 이러한 것을 아키텍처라고 한다.

 

3) 결론

즉, 인프라IT 환경을 구축하는 통합시스템이라고 생각하면 되고, 아키텍처는 이러한 시스템이 어떤 식으로 구축되었는지를 생각하면 된다.

'인프라' 카테고리의 다른 글

[하드웨어] Write Through, Write Back, Force Write Back  (1) 2024.11.04

strncpy() 란?

  • string n개를 copy 하는 함수
  • strcpy() 보다 안전한 함수

1) 함수 원형

char* strncpy(char* destination, const* source, size_t count);
  • 최대 count만큼 soruce를 destination에 복사한다.
  • 널 문자를 먼저 만나면 그전에 끝냄

1-1) source가 count보다 짧으면 

  • 남은걸 다 '\0'으로 채워줌

1-2) source가 count보다 길다면

  • count만큼 복사함
  • 널 문자를 못붙여서 안 붙여줌 
    • 이럴 경우 맨 마지막에 '\0'을 넣어줘야 함.

2) 예제

2-1) destination배열의 개수가 3개이고, source배열의 개수가 5개인데, 5개를 복사하면 어떻게 될까?

  • 결과적으로는 2개를 복사가 된다.
  • 3개가 복사 되지만 문자열의 끝을 알려주기 위해 별도로 destination 맨 마지막에 '\0'을 넣어줘야하기 때문

 

'C' 카테고리의 다른 글

[C언어] 음수의 변환 과정  (0) 2022.03.06
[C언어] 문자열 초기화 방법  (0) 2022.02.25
[C언어] 얕은 복사 vs 깊은 복사  (0) 2022.02.24
[C언어] #include 2가지 방식  (0) 2022.02.21
[C언어] size_t vs unsigned int  (0) 2022.02.21

1) 음수는 어떻게 변환 될까?

1-1) 음수의 변환 과정

  1. 음수의 값을 절대값으로 바꿔준다.
  2. 절대값을 바꾼 값을, 2진수로 변환한다.
  3. 2진수로 변환한 값을 0과 1을 바꿔준다. (1의 보수)
  4. 1의 보수를 구한 후 다시 1을 더해서 2의 보수로 만든다.

 

 

'C' 카테고리의 다른 글

[C언어] strncpy() 문자열 복사 함수  (0) 2022.03.06
[C언어] 문자열 초기화 방법  (0) 2022.02.25
[C언어] 얕은 복사 vs 깊은 복사  (0) 2022.02.24
[C언어] #include 2가지 방식  (0) 2022.02.21
[C언어] size_t vs unsigned int  (0) 2022.02.21

+ Recent posts