목차
- AES256이란?
- 이전 빌드 환경 구성 포스팅
- 이전 SHA256 해시 예제 포스팅
- SHA256 해시로 32bit AES 대칭키 만들기 예제
- C Openssl AES 256 컨텍스트 생성하여 키 설정 예제
1. AES256이란?
AES256(Advanced Encryption Standard 256-bit)은 대칭키 암호화 알고리즘으로, 256비트의 키를 사용하여 데이터를 암호화하고 복호화하는 데 사용되는 알고리즘입니다. 안전한 데이터 보호를 위해 사용됩니다.
2. 이전 빌드 환경 구성 포스팅
이전에 OpenSSL 라이브러리를 정적 또는 동적으로 빌드하는 방법과 개발 환경을 구성하는 방법에 대한 포스팅입니다.
2023.07.28 - [C] - [C/C++] Openssl 정적 라이브러리 빌드 및 Codelite 설치, 개발 환경 구성(ubuntu, codelite)
3. 이전 SHA256 해시 예제 포스팅
이전에 C 프로그램에서 OpenSSL 라이브러리를 활용하여 SHA256 해시를 계산하는 방법에 대한 포스팅입니다.
2023.07.28 - [C] - [C/C++] Openssl 활용 SHA256 해시 예제
4. SHA256 해시로 32bit AES 대칭키 만들기 예제
이 예제에서는 이전에 생성한 SHA256 해시를 활용하여 32비트 AES 대칭키를 만드는 방법을 설명합니다.
#include <stdio.h>
#include <openssl/sha.h>
int main() {
char data[] = "this is aes256 key";
unsigned char sha256_hash[SHA256_DIGEST_LENGTH];
// SHA256 해시 값(32바이트)을 가져와서 대칭키로 사용
SHA256(data, sizeof(data) - 1, sha256_hash);
unsigned char aes_key[32]; // 32바이트 배열
printf("AES 256 KEY : ");
for (int i = 0; i < 32; i++) {
aes_key[i] = sha256_hash[i];
printf("%02X ", aes_key[i]);
}
printf("\n");
// AES 대칭키로 활용할 수 있음
// ...
return 0;
}
5. C Openssl AES 256 컨텍스트 생성하여 키 설정 예제
이 예제에서는 C 프로그램에서 OpenSSL 라이브러리를 사용하여 AES 256 대칭키를 설정하는 방법을 설명합니다.
#include <stdio.h>
#include <string.h>
#include <openssl/sha.h>
#include <openssl/aes.h>
int main() {
AES_KEY aes_encrypt_key, aes_decrypt_key;
char data[] = "this is aes256 key";
unsigned char sha256_hash[SHA256_DIGEST_LENGTH];
// SHA256 해시 값(32바이트)을 가져와서 대칭키로 사용
SHA256(data, sizeof(data) - 1, sha256_hash);
unsigned char aes_key[32]; // 32바이트 배열
for (int i = 0; i < 32; i++) {
aes_key[i] = sha256_hash[i];
}
if (AES_set_encrypt_key(aes_key, 256, &aes_encrypt_key) < 0) {
printf("AES 암호화 키 설정 오류\n");
return 1;
}
if (AES_set_decrypt_key(aes_key, 256, &aes_decrypt_key) < 0) {
printf("AES 복호화 키 설정 오류\n");
return 1;
}
printf("AES 암복호화 키 설정 완료\n");
// 암호화 및 복호화에 사용할 AES 256 비트 키 설정이 완료됨
return 0;
}
반응형