[CS] 암호화 알고리즘
카테고리 없음2024. 5. 11. 21:31[CS] 암호화 알고리즘

1. 암호란? 중요한 정보를 읽기 어려운 값으로 변환하여 제3자가 볼 수 없도록 하는 기술 2. 암호의 구성요소 3. 암호가 제공하는 기능 기밀성: 허가되지 않은 사용자는 데이터를 볼 수 없다. 노출 위험으로부터 데이터를 보호하는 기능.무결성: 데이터를 변조하는 것이 불가능하거나 변조된 데이터를 검증할 수 있다. 변조 위험으로부터 데이터를 보호하는 기능.인증: 객체의 정체성을 식별할 수 있다. 안전한 사용자인지 확인하는 기능.부인 방지: 객체가 메시지를 송신 혹은 수신했다는 사실을 부인할 수 없도록 하는 기능.4. 암호화 알고리즘4-1) 커크호프의 원리 (Kerkhoff’s Principle)키를 제외한 모든 정보가 알려지더라도 안전해야 한다 - Auguste Kerckhoff, 1883 암호문이나 암호..

[알고리즘] 오늘만 사는 놈에게 죽는다, 그리디 Greedy
<problem_solving>/알고리즘 Algorithm2024. 4. 27. 19:00[알고리즘] 오늘만 사는 놈에게 죽는다, 그리디 Greedy

1. 개요대망의 알고리즘 포스팅의 그 장대한 서막을 알리며 가장 먼저 알아볼 알고리즘은 그리디 Greedy 알고리즘이다. 자주 언급되는 여러가지 알고리즘들이 있지만 그 중에서도 첫 번째로 그리디를 선택한 이유는 솔루션에 대한 접근 방식이 아주 단순하기 때문이다. 우리말로 탐욕법이라고도 하는 그리디 알고리즘은 현재 상황에서 지금 당장 좋은 것만 고르는 방법을 의미한다. 지금 당장 좋은 것만 고르는 알고리즘이라니 정말 욕심 가득한 생각이 따로 없다. 실제로 욕심쟁이 알고리즘이라고도 불린다고 한다. 눈앞의 달콤한 이익에 취한다니 철학도로서 도저히 용납할 수 없다. 아니면 영화 '아저씨(2010)'처럼 "내일만 사는 놈은, 오늘만 사는 놈한테 죽는다", 뭐 그런건가. 아무튼 이번 포스팅에서는 욕심쟁이 그리디 알..

[CS 발표] 인증과 인가
<computer_science>/면접 대비 Coding Interview2024. 4. 18. 13:25[CS 발표] 인증과 인가

1. 개요 먼저, 인증과 인가의 사전적 정의에 대해서 살펴보자. 인증 (Authentication) : 어떠한 문서나 행위가 정당한 절차로 이루어졌다는 것을 공적 기관이 증명함. 인가 (Authorization) : 인정하여 허가함. 다음과 같으며 개발에서 인증은 내가 누구인지 확인하는 행위, 인가는 내가 권한이 있는지 확인하는 행위라고 할 수 있다. 사실 말장난에 가깝다보니 헷갈리면 인가 대신 승인이라고 생각해도 좋다. 요즘 승인이라는 용어도 많이 사용한다고 함. 2. 인증과 인가 네이버 카페를 예시로 구체적인 상황으로 살펴보자 게시물을 읽으려고 포스팅 목록을 눌렀을때 '로그인이 필요합니다' 경고창과 함께 로그인 인증이 요구된다면 서버 입장에서는 현재 요청자가 카페 회원인지 누군지 몰라서 일어나는 상황..

[CS 발표] 어노테이션 Annotation
카테고리 없음2024. 4. 16. 02:17[CS 발표] 어노테이션 Annotation

1. 개요 어노테이션(Annotation)은 Java 5부터 새로 추가된 문법이다. 어노테이션을 직역하면 '주석'이라는 뜻이지만 자바에서는 @ 기호를 이용해 자바 코드에 특수한 의미를 부여하는 것을 의미한다. 주석은 사람에게 정보를 제공하지만 어노테이션은 특정 코드를 사용하는 프로그램에게 추가 정보를 전달하는 것이다. 위키백과에서는 다음과 같이 말하고 있다. 🌐 자바 애너테이션(Java Annotation) 자바 애너테이션(Java Annotation)은 자바 소스 코드에 추가하여 사용할 수 있는 메타데이터의 일종이다. 보통 @ 기호를 앞에 붙여서 사용한다. JDK 1.5 버전 이상에서 사용 가능하다. 자바 애너테이션은 클래스 파일에 임베디드되어 컴파일러에 의해 생성된 후 자바 가상머신에 포함되어 작동한..

[CS 발표] List, ArrayList, LinkedList
<computer_science>/면접 대비 Coding Interview2024. 4. 4. 08:51[CS 발표] List, ArrayList, LinkedList

1. 개요 리스트(List)는 모든 프로그래밍 언어에서 가장 유용한 자료구조 중의 하나이다. 자료구조에서 리스트는 일반적으로 연결 리스트(LinkedList, 링크드리스트)를 의미한다. 자료구조에서 리스트와 양대산맥이라고 할 수 있는 배열과 자주 비교가 되곤하는데, 기능적인 측면에서 이 둘의 가장 큰 차이점은 배열은 고정된 크기를 갖지만 리스트는 크기가 얼마든 변할 수 있다는 점이다. 배열은 할당받는 물리적인 주소값에서부터 선형으로 이어져있지만 리스트는 논리적으로 연결되어있기 때문에 삽입과 삭제가 비교적 자유롭기 때문이다. 2. List Java에서 제공하는 컬렉션 프레임워크란 객체나 데이터들을 효율적으로 관리(추가, 삭제, 검색, 저장)하기 위해서 사용하는라이브러리를 의미한다. `java.util` 패..

[CS 발표] 데이터베이스 트리거
<computer_science>/면접 대비 Coding Interview2024. 4. 1. 01:58[CS 발표] 데이터베이스 트리거

1. 개요 데이터베이스 트리거란 테이블에 대한 이벤트에 반응해 자동으로 실행되는 작업을 의미한다. 조금 더 구체적으로 이야기하면 특정 테이블에 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) 등과 같은 DML(데이터 조작어, Data Manipulation Language) 문이 수행되었을 때 DBMS에서 묵시적으로 자동으로 수행되는 저장 프로시저라고 할 수 있다. Java와 같은 객체 지향 언어에서 객체가 생성되거나 소멸될 때 자동으로 호출하는 생성자나 소멸자와 같은 묵시적 수행 함수를 떠올린다면 이해가 수월할지도 모르겠다. 트리거(Trigger)는 방아쇠라는 뜻으로 방아쇠를 당기면 총기 내부에서 알아서 일련의 작업들을 실행하고 총알이 발사된다. 마찬가지로 일련의 쿼리들을 하나의 함수처럼..

image