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






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

목차

  1. RSA란?
  2. 이전 빌드 환경 구성 포스팅
  3. C Openssl RSA 공개키 생성 예제
  4. C Openssl RSA 개인키 생성 예제
  5. 공개키 파일로 저장하기
  6. 개인키 파일로 저장하기

 

 

openssl 다운로드 페이지

 

 

 

1. RSA란?

RSA는 Rivest-Shamir-Adleman의 약자로, 공개키 암호 시스템의 대표적인 알고리즘입니다.

RSA 암호화 알고리즘은 공개키와 개인키를 사용하여 데이터를 암호화하고 복호화하는데 사용됩니다.

 

RSA란 공개키 개인키 쌍으로 암복호화하는 알고리즘이다. (https://velog.velcdn.com/images/choihocheol/post/17b3ca42-4f49-4962-9b72-3aa20fe83e3e/image.png)

 

 

 

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

이전에 C에서 OpenSSL 라이브러리를 활용하기 위한 빌드 환경 구성 방법에 대한 포스팅입니다.

 

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

 

 

 

 

3. C Openssl RSA 공개키 생성 예제

이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 RSA 공개키를 생성하는 방법을 설명합니다.

 

#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>

int main() {
    RSA *rsa_keypair = RSA_new();
    BIGNUM *e = BN_new();
    BN_set_word(e, RSA_F4);

    // RSA 키페어 생성
    if (RSA_generate_key_ex(rsa_keypair, 2048, e, NULL) != 1) {
        printf("RSA 공개키 생성 오류\n");
        return 1;
    }

    // 공개키 정보 출력
    printf("공개키 정보:\n");
    PEM_write_RSAPublicKey(stdout, rsa_keypair);

    RSA_free(rsa_keypair);
    BN_free(e);

    return 0;
}

 

 

 

RSA 공개키를 생성하여 출력한 모습

 

 

 

 

 

4. C Openssl RSA 개인키 생성 예제

이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 RSA 개인키를 생성하는 방법을 설명합니다.

 

#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>

int main() {
    RSA *rsa_keypair = RSA_new();
    BIGNUM *e = BN_new();
    BN_set_word(e, RSA_F4);

    // RSA 키페어 생성
    if (RSA_generate_key_ex(rsa_keypair, 2048, e, NULL) != 1) {
        printf("RSA 개인키 생성 오류\n");
        return 1;
    }

    // 개인키 정보 출력
    printf("개인키 정보:\n");
    PEM_write_RSAPrivateKey(stdout, rsa_keypair, NULL, NULL, 0, NULL, NULL);

    RSA_free(rsa_keypair);
    BN_free(e);

    return 0;
}

 

개인키를 생성하여 출력한 모습

 

 

 

 

5. 공개키 파일로 저장하기

이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 생성한 RSA 공개키를 파일로 저장하는 방법을 설명합니다.

 

#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>

int main() {
    RSA *rsa_keypair = RSA_new();
    BIGNUM *e = BN_new();
    BN_set_word(e, RSA_F4);

    // RSA 키페어 생성
    if (RSA_generate_key_ex(rsa_keypair, 2048, e, NULL) != 1) {
        printf("RSA 공개키 생성 오류\n");
        return 1;
    }

    // 공개키 파일로 저장
    FILE *public_key_file = fopen("/tmp/public_key.pem", "w");
    PEM_write_RSAPublicKey(public_key_file, rsa_keypair);
    fclose(public_key_file);

    RSA_free(rsa_keypair);
    BN_free(e);

    return 0;
}

 

 

생성한 공개키를 파일로 저장한 모습

 

 

 

 

 

6. 개인키 파일로 저장하기

이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 생성한 RSA 개인키를 파일로 저장하는 방법을 설명합니다.

 

#include <stdio.h>
#include <openssl/rsa.h>
#include <openssl/pem.h>

int main() {
    RSA *rsa_keypair = RSA_new();
    BIGNUM *e = BN_new();
    BN_set_word(e, RSA_F4);

    // RSA 키페어 생성
    if (RSA_generate_key_ex(rsa_keypair, 2048, e, NULL) != 1) {
        printf("RSA 개인키 생성 오류\n");
        return 1;
    }

    // 개인키 파일로 저장
    FILE *private_key_file = fopen("/tmp/private_key.pem", "w");
    PEM_write_RSAPrivateKey(private_key_file, rsa_keypair, NULL, NULL, 0, NULL, NULL);
    fclose(private_key_file);

    RSA_free(rsa_keypair);
    BN_free(e);

    return 0;
}

 

rsa개인키를 생성하여 파일로 저장한 모습

 

반응형


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