
	                	                 
mdecrypt_generic 함수의 'cipher' 매개변수는 EVP_CIPHER_CTX 구조체를 나타내는 포인터를 받습니다. 
AES-256-CBC를 사용하려면, 먼저 EVP_CIPHER_CTX_new 함수를 호출하여 EVP_CIPHER_CTX 구조체를 생성한 후, EVP_EncryptInit_ex 함수를 호출하여 AES-256-CBC 알고리즘을 초기화합니다. 
이후 EVP_CIPHER_CTX 구조체의 포인터를 'cipher' 매개변수에 전달하여 mdecrypt_generic 함수를 호출합니다.
예를 들어, 다음과 같이 코드를 작성할 수 있습니다.
#hostingforum.kr
c
#include 
int main() {
    EVP_CIPHER_CTX* ctx;
    unsigned char* key = ...; // AES-256-CBC 키
    unsigned char* iv = ...; // AES-256-CBC IV
    unsigned char* encrypted_data = ...; // 암호화된 데이터
    unsigned char* decrypted_data = ...; // 암호화 해제한 데이터
    // EVP_CIPHER_CTX 생성
    ctx = EVP_CIPHER_CTX_new();
    if (!ctx) {
        // 오류 처리
    }
    // AES-256-CBC 초기화
    if (!EVP_EncryptInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv)) {
        // 오류 처리
    }
    // 암호화 해제
    if (!mdecrypt_generic(ctx, encrypted_data, ...)) {
        // 오류 처리
    }
    // 암호화 해제한 데이터 저장
    memcpy(decrypted_data, ...);
    // EVP_CIPHER_CTX 해제
    EVP_CIPHER_CTX_free(ctx);
    return 0;
}
위 코드에서 'cipher' 매개변수는 EVP_CIPHER_CTX 구조체의 포인터를 받기 때문에, EVP_EncryptInit_ex 함수를 호출하여 AES-256-CBC 알고리즘을 초기화한 후, EVP_CIPHER_CTX 구조체의 포인터를 'cipher' 매개변수에 전달하여 mdecrypt_generic 함수를 호출합니다.
2025-05-13 06:43