Programming/C 26

openssl을 활용한 SSL 통신

개요본 글에서는 OpenSSL 라이브러리를 활용한 SSL(Secure Socket Layer) 통신의 원리와 구현 방법에 대해 다룬다. SSL은 인터넷 통신에서 데이터의 기밀성과 무결성을 보장하는 암호화 프로토콜로, 현대 보안 통신의 근간을 이루고 있다. OpenSSL은 SSL과 TLS(Transport Layer Security) 프로토콜의 오픈소스 구현체로, 다양한 암호화 기능을 제공한다. 이 글에서는 OpenSSL을 활용하여 클라이언트-서버 간 안전한 통신을 구현하는 방법을 코드 예제와 함께 설명한다.SSL 통신의 이해SSL/TLS의 개념SSL은 Netscape에 의해 개발된 보안 프로토콜로, 현재는 이를 발전시킨 TLS가 표준으로 사용되고 있다. 그러나 관행적으로 두 용어는 혼용되어 사용된다. S..

Programming/C 2025.03.17

unistd.h의 getopt() 함수를 활용한 argument 핸들링

개요getopt() 함수는 C 프로그래밍에서 명령줄 인자를 파싱 하기 위해 사용되는 함수이다. 이 함수는 unistd.h 헤더 파일에 정의되어 있으며, 주로 UNIX 계열 운영체제에서 사용된다. getopt() 함수를 사용하면 복잡하고 다양한 형식의 명령줄 인자를 쉽게 처리할 수 있어 프로그램의 사용성을 높일 수 있다.getopt() 함수의 사용법getopt() 함수는 명령줄 인자 중 옵션에 해당하는 인자들을 순차적으로 검사하여, 발견되는 옵션 문자를 반환한다. 옵션 문자란 -로 시작하는 짧은 명령어 (예: -a, -b)를 말합니다. 옵션에 추가 데이터가 필요한 경우, 콜론(:)을 사용하여 표시할 수 있다.함수 원형은 다음과 같다:cint getopt(int argc, char * const argv[]..

Programming/C 2025.03.15

if-else 구조 vs lookup table구조

개요C 언어를 사용하다 보면 if-else 구문을 많이 사용할 것이다. 하지만 if-else 구조가 많아질수록 효율성은 많이 떨어지게 된다.이때, if-else 구조로 처리해야 하는 로직이 많을 경우 lookup table 형식으로 보다 효율적인 코딩 및 유지보수를 할 수 있다.if-else 구조 예제 코드아래는 기본적인 if-else를 사용하여 특정 조건에 맞는 값을 리턴하는 코드이다.#include #include #define PG_CIPHER_AES_GCM 0#define PG_CIPHER_AES_CTR 1#define PG_CIPHER_AES_KWP 2#define PG_CIPHER_AES_XTS 3#define PG..

Programming/C 2025.03.13

YAML 개요 및 libyaml 사용법

개요YAML은 사람이 읽을 수 있는 데이터 직렬화 언어이다. 구성 파일과 데이터가 저장되거나 전송되는 응용 프로그램에 일반적으로 사용된다.YAML은 XML(Extensible Markup Language)과 동일한 많은 통신 응용 프로그램을 대상으로 하지만 SGML(Standard Generalized Markup Language)과는 의도적으로 다른 최소 구문을 가지고 있다.파이썬 스타일 들여쓰기를 사용하여 네스팅을 나타내며 대부분의 문자열 값에 대한 따옴표를 필요로 하지 않는다.사용자 지정 데이터 유형이 허용되지만 YAML은 기본적으로 스칼라(예: 문자열, int 및 float), 목록 및 연관 배열(map, dictionary 또는 hash)을 인코딩한다. 이러한 데이터 유형은 펄 프로그래밍 언어를..

Programming/C 2025.03.10

OpenSSL로 ARIA-CCM 구현

서론ARIA(Advanced Reversible Information Algorithm)는 한국에서 개발된 블록 암호 알고리즘으로, 128비트 블록 크기와 128, 192, 256비트 키 길이를 지원한다. ARIA는 한국 표준으로 채택되어 다양한 보안 응용 프로그램에서 사용되고 있으며, 특히 데이터의 기밀성을 보장하는 데 중요한 역할을 한다.CCM(Counter with CBC-MAC)은 인증된 암호화 모드로, 데이터의 기밀성뿐만 아니라 무결성도 보장한다. CCM 모드는 블록 암호를 사용하여 데이터를 암호화하고, 동시에 인증 태그를 생성하여 데이터가 변조되지 않았음을 확인할 수 있게 한다. 이러한 특성 덕분에 CCM 모드는 네트워크 프로토콜, 파일 암호화, 그리고 다양한 보안 응용 프로그램에서 널리 사용..

Programming/C 2025.03.04

qsort를 사용하여 배열 정렬하기

개요C언어에서 배열을 내림차순, 오름차순으로 정렬해야 할 때, stdlib.h의 qsort 함수를 사용하여 데이터를 정렬할 수 있다.본 글에서는 C에서 제공하는 qsort 함수에 대해 알아보자.사용 방법#include 정수형 배열을 내림차순/올림차순 할 때 사용할 콜백함수 등록.qsort 함수 호출.기본 구조stdlib.h에서 Quick Sort 함수인 qsort 함수를 제공해준다.void qsort (void *base, size_t nel, size_t width, int (*compare)(const void *, const void *);base: 정렬하고자 하는 배열의 포인터nel: 배열의 각 원소들의 총 수width: 배열에서 원소 하나의 크기(*compare): 비교를 수행할 함수 포인터.예..

Programming/C 2025.01.27
728x90
반응형