반응형

2024/11 76

Diffie-Hellman (DH) 키 교환 비대칭키 알고리즘 이해하기

Diffie-Hellman (DH) 키 교환 비대칭키 알고리즘 이해하기오늘은 비대칭키 암호화 알고리즘 중 하나인 Diffie-Hellman (DH) 키 교환에 대해 이야기해 보겠습니다. Diffie-Hellman 키 교환 알고리즘은 안전한 방식으로 비밀키를 교환할 수 있도록 해 주는 알고리즘으로, 네트워크 상에서 중요한 정보를 주고받을 때 많이 사용됩니다. 이 글에서는 DH 알고리즘의 기본 개념부터, Java 언어와 Linux C 언어로 구현하는 예제를 함께 살펴보겠습니다.Diffie-Hellman 키 교환 알고리즘의 개념Diffie-Hellman 키 교환 알고리즘은 1976년 Whitfield Diffie와 Martin Hellman이 개발한 공개키 암호화 기법입니다. 이 알고리즘의 목적은 네트워크를 ..

STM32 UART 설정 및 사용 가이드

STM32 UART 설정 및 사용 가이드안녕하세요, 소프트웨어 공장에 오신 것을 환영합니다. 오늘은 STM32F429ZI 보드에서 UART를 설정하고 사용하는 방법에 대해 자세히 설명해드리겠습니다. UART(Universal Asynchronous Receiver/Transmitter)는 직렬 통신을 위한 매우 중요한 프로토콜입니다. UART를 통해 보드와 다른 장치 간의 데이터 통신을 쉽게 할 수 있기 때문에, 임베디드 시스템 개발에서 빠질 수 없는 기술 중 하나입니다.이번 포스팅에서는 다음과 같은 내용들을 다룰 예정입니다:UART의 개념 및 기본 작동 원리STM32F429ZI 보드에서 UART 설정하기 (STM32CubeIDE 사용)HAL 라이브러리를 이용한 UART 초기화와 데이터 전송전체 코드 예..

STM32 2024.11.23

Android - JSON 파싱 및 API 연동

Android - JSON 파싱 및 API 연동안녕하세요, '소프트웨어 공장'에 오신 것을 환영합니다! 오늘은 안드로이드 애플리케이션 개발 시 자주 사용되는 "JSON 파싱 및 API 연동"에 대해 알아보려고 합니다. 네트워크를 통해 데이터를 주고받는 것은 현대 앱 개발에서 빠질 수 없는 부분입니다. 이번 포스팅에서는 간단한 예제와 함께 JSON 데이터를 Kotlin을 통해 어떻게 파싱하고 API와 연동하는지 살펴보겠습니다.1. JSON 파싱 및 API 연동의 개념JSON(JavaScript Object Notation)은 서버와 클라이언트 간의 데이터 전송을 위해 널리 사용되는 포맷입니다. API(Application Programming Interface)를 통해 서버로부터 데이터를 가져올 때, 주로..

Android/Application 2024.11.23

ECC (Elliptic Curve Cryptography) 비대칭키 암호화 알고리즘

ECC (Elliptic Curve Cryptography) 비대칭키 암호화 알고리즘비대칭키 암호화 알고리즘 중 하나인 ECC (Elliptic Curve Cryptography)는 공개키 암호 방식으로, 데이터의 보안을 유지하면서도 기존의 RSA 등보다 더 작은 키 크기에서 높은 보안성을 제공합니다. ECC는 주로 모바일 기기나 IoT 장비처럼 자원이 제한된 환경에서 효율적인 암호화를 제공하는 것으로 잘 알려져 있습니다.오늘은 ECC의 개념부터 ECC를 JAVA 및 Linux C 언어로 구현하는 예제를 함께 살펴보겠습니다.ECC란 무엇인가?ECC는 타원 곡선의 수학적 성질을 이용하여 공개키 암호화를 구현하는 알고리즘입니다. 기본적으로 타원 곡선 방정식은 다음과 같은 형태로 나타납니다:y^2 = x^3 ..

STM32 Timer 활용 - PWM 생성 및 타이머 인터럽트 설정

STM32 Timer 활용 - PWM 생성 및 타이머 인터럽트 설정STM32F429ZI의 타이머는 다양한 기능을 제공하여 마이크로컨트롤러의 타이밍 제어나 PWM 생성 등 다양한 작업을 수행할 수 있게 도와줍니다. 이번 포스팅에서는 타이머의 종류와 기본 개념을 다루고, PWM 생성, 타이머 인터럽트 설정 및 사용 방법에 대해 알아보겠습니다. 특히 GPIO 설정을 포함하여 타이머 기능을 사용하는 방법을 자세히 설명하고, 예제 소스 코드도 제공할 것입니다.1. STM32 타이머의 종류 및 기본 개념STM32F429ZI에는 다양한 타이머가 포함되어 있습니다. 주요 타이머는 다음과 같습니다:Advanced Control Timer (타이머 1, 8): 고급 PWM 기능과 다양한 타이밍 제어를 제공합니다.Gener..

STM32 2024.11.22

Android REST API(Retrofit) 연동 - 네트워크 통신과 데이터 파싱

Android REST API(Retrofit) 연동 - 네트워크 통신과 데이터 파싱안녕하세요, 오늘은 안드로이드 애플리케이션에서 Retrofit 라이브러리를 사용하여 REST API와 통신하는 방법에 대해 알아보겠습니다. Retrofit은 Square에서 제공하는 HTTP 클라이언트 라이브러리로, 안드로이드에서 네트워크 작업을 손쉽게 처리할 수 있게 도와줍니다. Retrofit을 사용하면 서버와의 통신 및 JSON 형식의 데이터를 파싱하는 과정을 간단하게 구현할 수 있습니다. 이번 포스팅에서는 Retrofit을 사용하여 간단한 REST API 호출과 데이터 파싱을 다루는 방법을 예제를 통해 알아보겠습니다.1. Retrofit 라이브러리 설정1.1 Gradle 의존성 추가Retrofit을 사용하기 위해서..

Android/Application 2024.11.22

RSA 비대칭키 암호화 알고리즘

RSA 비대칭키 암호화 알고리즘비대칭키 암호화 알고리즘은 데이터를 안전하게 전달하기 위한 중요한 기술 중 하나입니다. 그 중에서도 가장 널리 알려진 알고리즘 중 하나가 바로 RSA (Rivest-Shamir-Adleman)입니다. 오늘은 RSA 알고리즘의 원리와 Java, Linux C 언어로 구현한 예제를 통해 RSA 암호화와 복호화를 알아보도록 하겠습니다.RSA 알고리즘 개요RSA 알고리즘은 공개키 암호화 방식의 대표적인 예입니다. RSA는 공개키와 비밀키 두 가지 키를 사용하여 데이터를 암호화하고 복호화합니다. 공개키는 누구나 알 수 있도록 공개되어 있으며, 비밀키는 수신자만 알고 있어야 합니다.RSA의 핵심 개념은 소인수분해의 어려움에 기반을 두고 있습니다. 두 개의 매우 큰 소수를 곱하여 만든 ..

STM32 GPIO 기본 개념과 구조, LED 제어

STM32 GPIO 기본 개념과 구조, LED 제어안녕하세요, '소프트웨어 공장' 블로그에 오신 것을 환영합니다. 오늘은 STM32F429ZI의 GPIO 기본 개념과 구조를 살펴보고, 이를 활용하여 간단한 LED 제어를 하는 방법에 대해 소개하려고 합니다. 특히, GPIO 설정 방법에 대해 자세히 설명하고, STM32CubeIDE를 활용한 전체 코드 예제도 함께 다루어 보겠습니다.STM32의 GPIO는 다양한 주변 장치와의 연결을 통해 기능을 확장할 수 있도록 해주는 중요한 기능입니다. 오늘의 글을 통해 GPIO의 구조와 동작 방식을 이해하고, 실제로 간단한 LED를 제어하는 프로젝트를 진행해 보세요.1. GPIO란 무엇인가?GPIO(General Purpose Input/Output)는 말 그대로 범용..

STM32 2024.11.21

STM32 개발 환경 설정

STM32 시리즈란?STM32는 STMicroelectronics에서 개발한 마이크로컨트롤러(MCU) 제품군입니다. ARM Cortex-M 코어를 기반으로 하여 고성능과 전력 효율성을 갖춘 다양한 시리즈를 제공하며, IoT(사물 인터넷), 산업용 제어, 웨어러블 기기, 오디오 및 멀티미디어 등 광범위한 분야에서 사용되고 있습니다. STM32 시리즈는 크게 성능과 용도에 따라 다양한 라인업으로 나누어지며, 각 제품군은 각각의 고유한 특성을 가지고 있습니다.STM32 제품군은 다음과 같이 구분할 수 있습니다:STM32F 시리즈: 가장 널리 사용되는 범용 MCU로서 높은 성능을 제공하며, 가격 대비 성능이 뛰어납니다.STM32L 시리즈: 저전력 제품군으로, 배터리 수명을 중요시하는 애플리케이션에 적합합니다.S..

STM32 2024.11.21

Android - Room 라이브러리로 SQLite 데이터베이스 구축 및 CRUD 구현하기

Android - Room 라이브러리로 SQLite 데이터베이스 구축 및 CRUD 구현하기안드로이드 애플리케이션을 개발하다 보면 데이터의 영속성을 유지하기 위해 데이터베이스를 사용해야 하는 경우가 많습니다. 안드로이드에서는 대표적으로 SQLite 데이터베이스를 사용할 수 있지만, SQLite API를 직접 사용하는 것은 불편하고 에러가 발생하기 쉽습니다. 이를 좀 더 편리하게 사용할 수 있도록 구글에서 제공하는 Room 라이브러리를 활용하면 좋습니다. 이번 포스팅에서는 Room을 이용해 SQLite 데이터베이스를 구축하고, CRUD (Create, Read, Update, Delete) 작업을 구현하는 방법을 예제를 통해 소개하겠습니다.Room 라이브러리란?Room은 안드로이드 Jetpack 라이브러리의..

Android/Application 2024.11.21
반응형