목차
1. 이전 빌드 환경 구성 포스팅
이전에 OpenSSL 라이브러리를 정적 또는 동적으로 빌드하는 방법과 개발 환경을 구성하는 방법에 대한 포스팅입니다.
2023.07.28 - [C] - [C/C++] Openssl 정적 라이브러리 빌드 및 Codelite 설치, 개발 환경 구성(ubuntu, codelite)
2. 이전 AES 대칭키 생성 및 설정하기 포스팅
이전에 C에서 OpenSSL 라이브러리를 활용하여 AES 256 대칭키를 생성하고 설정하는 방법에 대한 포스팅입니다.
2023.07.28 - [C] - [C/C++] Openssl 활용 AES 256 대칭키 생성 및 설정하기
3. C Openssl AES 컨텍스트 생성 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 AES 컨텍스트를 생성하는 방법을 설명합니다.
#include <stdio.h>
#include <string.h>
#include <openssl/aes.h>
int main() {
AES_KEY aes_key;
unsigned char key[32]; // 32바이트 AES 대칭키
// 대칭키 설정 코드
if (AES_set_encrypt_key(key, 256, &aes_key) < 0) {
printf("AES 암호화 키 설정 오류\n");
return 1;
}
if (AES_set_decrypt_key(key, 256, &aes_key) < 0) {
printf("AES 복호화 키 설정 오류\n");
return 1;
}
// AES 컨텍스트 생성이 완료됨
printf("키설정완료\n");
return 0;
}
4. C Openssl AES256 ECB 암복호화 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 AES256 ECB 모드로 암호화와 복호화를 수행하는 방법을 설명합니다.
#include <stdio.h>
#include <string.h>
#include <openssl/aes.h>
int main() {
AES_KEY aes_key;
unsigned char key[32] = {0,}; // 32바이트 AES 대칭키
unsigned char plaintext[128] = "This is a msg.";
unsigned char encrypted[128] = {0,};
unsigned char decrypted[128] = {0,};
// 평문
printf("Plaintext: %s\n", plaintext);
// 암호키 설정
if (AES_set_encrypt_key(key, 256, &aes_key) < 0) {
printf("AES 암호화 키 설정 오류\n");
return 1;
}
// 암호화
AES_ecb_encrypt(plaintext, encrypted, &aes_key, AES_ENCRYPT);
// 암호문 출력
printf("Encrypted: %s\n", encrypted);
// 복호화키 설정
if (AES_set_decrypt_key(key, 256, &aes_key) < 0) {
printf("AES 복호화 키 설정 오류\n");
return 1;
}
// 복호화
AES_ecb_encrypt(encrypted, decrypted, &aes_key, AES_DECRYPT);
// 결과 출력
printf("Decrypted: %s\n", decrypted);
return 0;
}
반응형