목차
- SHA1이란?
- 이전 빌드 환경 구성 포스팅
- C Openssl SHA1 컨텍스트 생성 예제
- C Openssl SHA1 해시 예제
- C Openssl 문자열 입력받아 실시간 SHA1 해시 예제
- C Openssl 파일 SHA1 해시 예제
1. SHA1이란?
SHA1(Secure Hash Algorithm 1)은 데이터 무결성을 확인하기 위해 사용되는 해시 함수로, 임의의 길이의 데이터를 입력받아 160비트의 고정된 길이 해시 값을 출력하는 알고리즘입니다.
데이터의 무결성을 보장하는 데에 주로 사용됩니다.
2. 이전 빌드 환경 구성 포스팅
이전에 OpenSSL 라이브러리를 정적 또는 동적으로 빌드하는 방법과 개발 환경을 구성하는 방법에 대한 포스팅입니다.
2023.07.28 - [C] - [C/C++] Openssl 정적 라이브러리 빌드 및 Codelite 설치, 개발 환경 구성(ubuntu, codelite)
[C/C++] Openssl 정적 라이브러리 빌드 및 Codelite 설치, 개발 환경 구성(ubuntu, codelite)
목차 이전 openssl 정적 라이브러리 빌드 포스팅 Codelite 설치 예제 Codelite 프로젝트 생성 openssl 정적 라이브러리 링크 정상 설치 확인 간단 예제 1. 이전 openssl 정적 라이브러리 빌드 포스팅 이전 포
salguworld.tistory.com
3. C Openssl SHA1 컨텍스트 생성 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 SHA1 컨텍스트를 생성하는 방법을 설명합니다.
#include <openssl/sha.h>
int main() {
SHA_CTX sha1_ctx;
SHA1_Init(&sha1_ctx);
// SHA1 컨텍스트를 초기화하고 데이터를 입력하기 위한 준비
// 필요한 경우 SHA1_Update 함수로 데이터를 추가로 입력할 수 있음
printf("정상 초기화\n");
return 0;
}
4. C Openssl SHA1 해시 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 SHA1 해시를 계산하는 방법을 설명합니다.
#include <stdio.h>
#include <openssl/sha.h>
int main() {
char data[] = "Hello, SHA1!";
unsigned char sha1_hash[SHA_DIGEST_LENGTH];
SHA1(data, sizeof(data) - 1, sha1_hash);
printf("SHA1 해시 결과: ");
for (int i = 0; i < SHA_DIGEST_LENGTH; i++) {
printf("%02x", sha1_hash[i]);
}
printf("\n");
return 0;
}
5. C Openssl 문자열 입력받아 실시간 SHA1 해시 예제
이 예제에서는 C 프로그램에서 문자열을 입력받아 OpenSSL 라이브러리를 사용하여 SHA1 해시를 계산하는 방법을 설명합니다.
#include <stdio.h>
#include <openssl/sha.h>
int main() {
char input_string[100];
printf("문자열을 입력하세요: ");
fgets(input_string, sizeof(input_string), stdin);
unsigned char sha1_hash[SHA_DIGEST_LENGTH];
SHA1(input_string, strlen(input_string) - 1, sha1_hash);
printf("SHA1 해시 결과: ");
for (int i = 0; i < SHA_DIGEST_LENGTH; i++) {
printf("%02x", sha1_hash[i]);
}
printf("\n");
return 0;
}
6. C Openssl 파일 SHA1 해시 예제
이 예제에서는 C 프로그램에서 파일을 읽어와 OpenSSL 라이브러리를 활용하여 SHA1 해시를 계산하는 방법을 설명합니다.
test_text.txt 파일 생성방법은 이전 포스팅에서 다뤘으므로 확인 후 진행합니다.
2023.07.28 - [Linux/Openssl] - [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;
}
SHA_CTX sha1_ctx;
SHA1_Init(&sha1_ctx);
unsigned char buffer[1024];
size_t bytes_read;
while ((bytes_read = fread(buffer, 1, sizeof(buffer), file)) != 0) {
SHA1_Update(&sha1_ctx, buffer, bytes_read);
}
unsigned char sha1_hash[SHA_DIGEST_LENGTH];
SHA1_Final(sha1_hash, &sha1_ctx);
fclose(file);
printf("파일 %s의 SHA1 해시 결과: ", filename);
for (int i = 0; i < SHA_DIGEST_LENGTH; i++) {
printf("%02x", sha1_hash[i]);
}
printf("\n");
return 0;
}