Apple 정품 아이폰 16 Pro 자급제, 화이트 티타늄, 256GB






블로그 내에서 다른 포스팅 검색하기기
검색어를 입력해주세요

목차

  1. SHA256이란?
  2. 이전 빌드 환경 구성 포스팅
  3. C Openssl SHA256 컨텍스트 생성 예제
  4. C Openssl SHA256 해시 예제
  5. C Openssl 문자열 입력받아 실시간 SHA256 해시 예제
  6. C Openssl 파일 SHA256 해시 예제
  7. MD5, SHA1, SHA256 차이점

 

 

SHA 알고리즘은 1, 256,512등 결과 비트수에 따라 다르다.

 

 

 

1. SHA256이란?

SHA256(Secure Hash Algorithm 256-bit)은 데이터 무결성을 확인하기 위해 사용되는 해시 함수로, 임의의 길이의 데이터를 입력받아 256비트의 고정된 길이 해시 값을 출력하는 알고리즘입니다.

 

데이터의 무결성을 보장하는 데에 주로 사용됩니다.

 

SHA2 알고리즘

 

 

 

 

2. 이전 빌드 환경 구성 포스팅

이전에 OpenSSL 라이브러리를 정적 또는 동적으로 빌드하는 방법과 개발 환경을 구성하는 방법에 대한 포스팅입니다.

 

2023.07.28 - [C] - [C/C++] Openssl 정적 라이브러리 빌드 및 Codelite 설치, 개발 환경 구성(ubuntu, codelite)

 

 

 

 

 

3. C Openssl SHA256 컨텍스트 생성 예제

이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 SHA256 컨텍스트를 생성하는 방법을 설명합니다.

 

#include <openssl/sha.h>

int main() {
    SHA256_CTX sha256_ctx;
    SHA256_Init(&sha256_ctx);
    // SHA256 컨텍스트를 초기화하고 데이터를 입력하기 위한 준비
    // 필요한 경우 SHA256_Update 함수로 데이터를 추가로 입력할 수 있음
    printf("초기화 성공\n");
    return 0;
}

 

 

 

 

 

 

 

sha256 컨텍스트 초기화에 성공하여 문구가 출력된 모습

 

 

 

 

 

4. C Opensl SHA256 해시 예제

이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 SHA256 해시를 계산하는 방법을 설명합니다.

 

#include <stdio.h>
#include <openssl/sha.h>

int main() {
    char data[] = "Hello, SHA256!";
    unsigned char sha256_hash[SHA256_DIGEST_LENGTH];
    SHA256(data, sizeof(data) - 1, sha256_hash);

    printf("SHA256 해시 결과: ");
    for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
        printf("%02x", sha256_hash[i]);
    }
    printf("\n");

    return 0;
}

 

특정 문자열을 SHA256으로 해시하여 얻은 해시값이 출력된 모습

 

 

 

 

5. C Openssl 문자열 입력받아 실시간 SHA256 해시 예제

이 예제에서는 C 프로그램에서 문자열을 입력받아 OpenSSL 라이브러리를 사용하여 SHA256 해시를 계산하는 방법을 설명합니다.

 

#include <stdio.h>
#include <openssl/sha.h>

int main() {
    char input_string[100];
    printf("문자열을 입력하세요: ");
    fgets(input_string, sizeof(input_string), stdin);

    unsigned char sha256_hash[SHA256_DIGEST_LENGTH];
    SHA256(input_string, strlen(input_string) - 1, sha256_hash);

    printf("SHA256 해시 결과: ");
    for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
        printf("%02x", sha256_hash[i]);
    }
    printf("\n");

    return 0;
}

 

실시간으로 문자열을 입력받아 SHA256 해시하여 얻은 결과값

 

 

 

 

6. C Openssl 파일 SHA256 해시 예제

이 예제에서는 C 프로그램에서 파일을 읽어와 OpenSSL 라이브러리를 활용하여 SHA256 해시를 계산하는 방법을 설명합니다.

 

본 예제에서 사용되는 test_text1.txt 파일은 아래 포스팅에서 확인하시면 됩니다.

 

2023.07.28 - [C] - [C/C++] C언어 Openssl 활용 MD5 해시 예제(문자열, 파일해시)

 

 

#include <stdio.h>
#include <openssl/sha.h>

int main() {
    const char* filename = "/tmp/test_text1.txt";
    FILE* file = fopen(filename, "rb");
    if (!file) {
        printf("파일을 열 수 없습니다.\n");
        return 1;
    }

    SHA256_CTX sha256_ctx;
    SHA256_Init(&sha256_ctx);

    unsigned char buffer[1024];
    size_t bytes_read;

    while ((bytes_read = fread(buffer, 1, sizeof(buffer), file)) != 0) {
        SHA256_Update(&sha256_ctx, buffer, bytes_read);
    }

    unsigned char sha256_hash[SHA256_DIGEST_LENGTH];
    SHA256_Final(sha256_hash, &sha256_ctx);

    fclose(file);

    printf("파일 %s의 SHA256 해시 결과: ", filename);
    for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
        printf("%02x", sha256_hash[i]);
    }
    printf("\n");

    return 0;
}

 

test_text1.txt 파일을 SHA256 알고리즘으로 해시한 모습

 

 

 

7. MD5, SHA1, SHA256 차이점

MD5, SHA1, SHA256은 모두 해시 함수이지만 해시 길이와 보안 수준에 차이가 있습니다. MD5는 128비트, SHA1은 160비트, SHA256은 256비트의 해시 값을 생성합니다.

 

MD5와 SHA1은 현재 안전한 해시 알고리즘이 아니며 보안적으로 취약점이 발견되었습니다.

따라서 보안 요구사항이 있는 경우에는 SHA256을 사용하는 것이 좋습니다.

 

반응형


살구엉덩이님의
글이 좋았다면 응원을 보내주세요!