목차
- MD5란?
- 이전 빌드 환경 구성 포스팅
- C Openssl MD5 컨텍스트 생성 예제
- C Openssl MD5 해시 예제
- C Openssl 문자열 입력받아 실시간 MD5 해시 예제
- C Openssl 파일 MD5 해시 예제
1. MD5란?
MD5(Message-Digest Algorithm 5)는 메시지 다이제스트 알고리즘으로, 임의의 길이의 데이터를 입력받아 고정된 길이의 해시 값을 출력하는 알고리즘입니다.
주로 데이터 무결성 확인이나 패스워드 등의 보안적인 목적으로 사용됩니다.
2. 이전 빌드 환경 구성 포스팅
이전에 OpenSSL 라이브러리를 정적 또는 동적으로 빌드하는 방법과 개발 환경을 구성하는 방법에 대한 포스팅입니다.
2023.07.22 - [Linux/Openssl] - [Linux] openssl 1.1.0i 정적 라이브러리 빌드(필요 패키지 설치 및 빌드)
[Linux] openssl 1.1.0i 정적 라이브러리 빌드(필요 패키지 설치 및 빌드)
목차 OpenSSL 1.1.0i 버전의 특징과 변경 사항 설명 OpenSSL 빌드 환경 설정 OpenSSL 빌드에 필요한 환경 설정과 종속성 설명 필요한 패키지와 라이브러리 설치 방법 안내 빌드 1. OpenSSL 1.1.0i 버전의 특징
salguworld.tistory.com
2023.07.28 - [C] - [C/C++] Openssl 정적 라이브러리 빌드 및 Codelite 설치, 개발 환경 구성(ubuntu, codelite)
3. C Openssl MD5 컨텍스트 생성 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 MD5 컨텍스트를 생성하는 방법을 설명합니다.
#include <openssl/md5.h>
int main() {
MD5_CTX md5_ctx;
MD5_Init(&md5_ctx);
// MD5 컨텍스트를 초기화하고 데이터를 입력하기 위한 준비
// 필요한 경우 MD5_Update 함수로 데이터를 추가로 입력할 수 있음
printf("정상 초기화\n");
return 0;
}
4. C Openssl MD5 해시 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 MD5 해시를 계산하는 방법을 설명합니다.
#include <stdio.h>
#include <openssl/md5.h>
int main() {
char data[] = "Hello, MD5!";
unsigned char md5_hash[MD5_DIGEST_LENGTH];
MD5(data, sizeof(data) - 1, md5_hash);
printf("MD5 해시 결과: ");
for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
printf("%02x", md5_hash[i]);
}
printf("\n");
return 0;
}
5. C Openssl 문자열 입력받아 실시간 MD5 해시 예제
이 예제에서는 C 프로그램에서 문자열을 입력받아 OpenSSL 라이브러리를 사용하여 MD5 해시를 계산하는 방법을 설명합니다.
#include <stdio.h>
#include <openssl/md5.h>
int main() {
char input_string[100];
printf("문자열을 입력하세요: ");
fgets(input_string, sizeof(input_string), stdin);
unsigned char md5_hash[MD5_DIGEST_LENGTH];
MD5(input_string, strlen(input_string) - 1, md5_hash);
printf("MD5 해시 결과: ");
for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
printf("%02x", md5_hash[i]);
}
printf("\n");
return 0;
}
6. C Openssl 파일 MD5 해시 예제
이 예제에서는 C 프로그램에서 파일을 읽어와 OpenSSL 라이브러리를 활용하여 MD5 해시를 계산하는 방법을 설명합니다.
우선 예제에 사용할 임시 텍스트 파일을 만들어보겠습니다.
쉘에서 아래 명령을 실행합니다.
$ echo "test text file!" > /tmp/test_text1.txt
이후 아래와 같이 코드를 작성하고 실행합니다.
#include <stdio.h>
#include <openssl/md5.h>
int main() {
const char* filename = "/tmp/test_text1.txt";
FILE* file = fopen(filename, "rb");
if (!file) {
printf("파일을 열 수 없습니다.\n");
return 1;
}
MD5_CTX md5_ctx;
MD5_Init(&md5_ctx);
unsigned char buffer[1024];
size_t bytes_read;
while ((bytes_read = fread(buffer, 1, sizeof(buffer), file)) != 0) {
MD5_Update(&md5_ctx, buffer, bytes_read);
}
unsigned char md5_hash[MD5_DIGEST_LENGTH];
MD5_Final(md5_hash, &md5_ctx);
fclose(file);
printf("파일 %s의 MD5 해시 결과: ", filename);
for (int i = 0; i < MD5_DIGEST_LENGTH; i++) {
printf("%02x", md5_hash[i]);
}
printf("\n");
return 0;
}
이상으로 C에서 OpenSSL 라이브러리를 활용하여 MD5 해시를 다루는 간단한 예제들을 소개하였습니다.