[Web/암호화] Web개발자 관점에서 보는 여러가지 암호화 방식 (RSA / SHA / AES)
·
Computer Science
개발 과정 중 전화번호 암호화, 비밀번호 암호화가 필요해서 암호화 알고리즘을 선택해야 했다. RSA와 AES는 복호화가 필요한 경우 사용하고, SHA는 복호화가 필요 없는 경우(비밀번호)에 사용했다.다른 글들을 찾아보니 대부분 암호화 알고리즘에 대해 정리했다. 그러나 이 글에서는 수학적인 부분은 간소화하고 Web 개발자의 관점에서 필요한 부분을 정리해보려고 한다.RSA / SHA / AES 방식의 차이점우선 RSA와 AES는 양방향 암호화 방식이고, SHA는 단방향 암호화 방식이다. 이 차이는 복호화가 가능한지 여부에 따라 나뉜다. 복호화가 가능하면 양방향이고, 복호화가 불가하면 단방향이다.전화번호의 경우 암호화해서 저장했다가, 필요한 경우 복호화해서 사용해야한다. 그러나 비밀번호의 경우에는 복호화가 필..
[CS / 운영체제] 컴퓨터 부팅(Booting) 과정
·
Computer Science
부팅(Booting)이란?컴퓨터를 켜서 동작시키는 절차.처음 컴퓨터를 켜면 메모리에는 아무것도 올라와 있지 않다. 컴퓨터가 동작하게 하기 위해 운영체제 커널을 특정 주소의 물리 메모리로 올려서 실행되도록 하는 절차를 말한다.부팅 과정컴퓨터에 전원을 공급ROM에서 BIOS 프로그램을 RAM에 올린다. (1)BIOS는 POST(Power-On Self Test) 실행 BIOS는 Boot Loader를 RAM에 올린다. (2)Boot Loader는 Boot 프로그램을 RAM에 올리고 실행한다. (3) (이제 Boot 프로그램이 Memory에 올라가 있는 상태이다.)Boot 프로그램은 운영체제 커널 이미지를 RAM에 올리고 실행한다.(4)부팅 과정 종료 ROM(Read-Only Memory)과 RAM(Rando..
[Linux/Unix] POSIX와 Unix 계열의 표준 입출력
·
Computer Science
이전 글...[Linux/Unix] POSIX란? (포직스, 이식 가능 운영체제 인터페이스, Unix 표준) 표준 스트림표준 스트림(Standard Stream)은 Posix 표준을 따르는 OS의 표준 입출력 통로를 말한다.Unix 계열 운영체제에서 컴퓨터 프로그램과 여러 입출력 장치 간에 통로(Stream) 스트림은 프로그램을 드나드는 데이터를 바이트의 흐름(byte stream)으로 표현된 것이다. Unix 기반 운영체제에서는 이 스트림을 이용해서 각 장치를 파일처럼 다루고, 모든 파일과 데이터를 표준 입력과 표준 출력으로 나타내며 이들 사이의 상호작용을 pipe를 통해 조합, 연결하여 사용한다. 즉, 표준 입출력 + pipe로 모든 동작을 정의한다.표준 입력(stdin) / 표..
[Linux/Unix] POSIX란? (포직스, 이식 가능 운영체제 인터페이스, Unix 표준)
·
Computer Science
POSIX란?POSIX : Portable Operating System Interface + UniX-> 이식 가능한 운영 체제 인터페이스 + 유닉스 호환 운영체제에 보통 X가 붙는 것에서 유래한다.<span style="..
[CS / 운영체제] 프로세스와 스레드, IPC, 멀티 스레드
·
Computer Science
프로세스(Process) 란? 프로세스는 실행 중인 프로그램을 말한다. 스케쥴링의 대상이 되는 작업, Task, Job 등과 같은 용어이다. 응용 프로그램과 프로세스는 같은 용어가 아니다. 예를 들면 excel 프로그램은 excel.exe라는 실행 파일로 존재한다. 이 파일은 컴퓨터가 이해할 수 있는 0과 1로 된 바이너리로 구성되어 있고, excel.exe를 실행해서 excep 프로그램이 뜨면, 이를 프로세스라고 한다. excel 프로그램을 여러 개 여러 개 띄우면, 여러 개의 프로세스가 실행되는 것이다. 프로세스 스케쥴링 여러 개의 프로세스가 동시에 실행되고 있을 때, 어떤 프로세스를 먼저 실행시킬지에 대한 규칙이 있어야 한다. 이를 프로세스 스케쥴링이라고 한다. 배치 처리 시스템, 시분할 시스템, ..
[CS / 운영체제] 운영체제란? OS 용어 정리 - 쉘, 시스템콜, API
·
Computer Science
운영체제 (Operating System) User가 사용하는 응용 프로그램(Application)과 하드웨어 사이에서 동작하는 프로그램을 말한다. Windows, MacOS, UNIX(Linux) 등이 운영체제에 해당된다. OS는 더 상세히 커널(kernel)을 의미하고, 이 커널에 여러 가지가 추가된 것을 운영체제라고 말한다. 💡운영체제는 사용자가 사용하는 응용 프로그램이 효율적으로, 적절하게 동작하도록 지원한다. 즉, 응용 프로그램이 요청하는 시스템 리소스를 효율적으로 분배하고, 지원하는 소프트웨어이다. 커널(kernel) 커널은 운영체제에서 가장 중요한 소프트웨어로, 컴퓨터의 자원들을 관리하는 역할을 한다. 하드웨어의 자원을 프로세스에 할당하고, 프로세스 제어, 메모리 관리, 시스템콜 수행 등을 ..
[CS] 프로그래밍 패러다임 (선언형, 함수형, 객체지향, 절차지향)
·
Computer Science
프로그래밍 패러다임 (programming paradigm) 프로그래밍 패러다임은 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론이다. 객체지향 프로그램이과 함수형 프로그래밍을 예로 들어보자. 객체지향 프로그래밍 : 상호작용하는 객체들의 집합 함수형 프로그래밍 : 상태 값을 지니지 않는 함숫값들의 연속 Java의 프로그래밍 패러다임 jdk 1.8 이전의 자바는 객체지향 프로그래밍을 지원했었지만, 이후로는 함수형 프로그래밍 패러다임을 지원하기 위해 람다식, 생성자 레퍼런스, 메서드 레퍼런스를 도입했다. 추가로 선언형 프로그래밍을 위해 스트림(stream) 표준 API도 추가했다. 선언형 프로그래밍과 함수형 프로그래밍 선언형 프로그래밍(declarative programming)은 '..
[CS] SOLID : 객체지향 설계 5 원칙
·
Computer Science
SOLID 객체지향의 4대 특성에 기반하기 때문에 5가지 모두 유사한 모양을 가지고 있다. 1. SRP(Single Resoponsibility Principle) : 단일 책임 원칙 클래스는 하나의 기능만 가지며, 어떤 변화에 의해 클래스를 변경해야 하는 이유는 오직 한 가지뿐이어야 한다. 변경에 의한 연쇄작용 감소 가독성 향상 유지보수 용이 서로 밀접한 관계가 있는 기능끼리 클래스로 묶고, 서로 다른 기능을 하는 클래스를 최대한 떨어뜨려놓는 것이 좋다. 이렇게 하면 문제가 발생하더라도 문제가 발생한 부분과 관련 없는 동작에는 영향을 미치지 않거나, 그 영향이 작아질 수 있다. 즉, 객체지향 설계의 이점을 살려서 유지보수를 용이하게 만들어 줘야 한다. 2. OCP(Open Closed Principle..