
`mdecrypt_generic()` 함수는 OpenSSL 라이브러리의 암호화 및 복호화 함수 중 하나입니다. 이 함수는 암호화된 데이터를 복호화하는 데 사용됩니다.
`mdecrypt_generic()` 함수의 사용법은 다음과 같습니다.
#hostingforum.kr
c
int mdecrypt_generic(int md_ctx, const unsigned char *in, unsigned int inl, unsigned char *out, unsigned int *outl);
* `md_ctx`: 암호화된 데이터를 처리하는 컨텍스트입니다. 이 컨텍스트는 `EVP_CIPHER_CTX_new()` 함수를 사용하여 생성할 수 있습니다.
* `in`: 암호화된 데이터입니다.
* `inl`: 암호화된 데이터의 길입니다.
* `out`: 복호화된 데이터를 저장할 메모리입니다.
* `outl`: 복호화된 데이터의 길이를 저장할 변수입니다.
`mdecrypt_generic()` 함수를 사용하여 암호화된 데이터를 복호화하는 방법은 다음과 같습니다.
1. `EVP_CIPHER_CTX_new()` 함수를 사용하여 암호화된 데이터를 처리하는 컨텍스트를 생성합니다.
2. `EVP_CipherInit_ex()` 함수를 사용하여 복호화 키와 초기화 벡터를 설정합니다.
3. `mdecrypt_generic()` 함수를 호출하여 암호화된 데이터를 복호화합니다.
4. 복호화된 데이터를 저장할 메모리를 할당하고 `mdecrypt_generic()` 함수의 `out` 매개변수로 전달합니다.
5. 복호화된 데이터의 길이를 저장할 변수를 할당하고 `mdecrypt_generic()` 함수의 `outl` 매개변수로 전달합니다.
예를 들어, 다음과 같이 `mdecrypt_generic()` 함수를 사용하여 암호화된 데이터를 복호화할 수 있습니다.
#hostingforum.kr
c
#include
#include
#include
int main() {
EVP_CIPHER_CTX* ctx;
unsigned char* plaintext;
unsigned char* ciphertext;
unsigned int ciphertext_len, plaintext_len;
// 암호화된 데이터를 암호화 키와 초기화 벡터로 복호화합니다.
if ((ctx = EVP_CIPHER_CTX_new()) == NULL) {
printf("EVP_CIPHER_CTX_new() failedn");
return -1;
}
// 복호화 함수 호출
if (!EVP_CipherInit_ex(ctx, EVP_aes_256_cbc(), NULL, key, iv, 0)) {
printf("EVP_CipherInit_ex() failedn");
EVP_CIPHER_CTX_free(ctx);
return -1;
}
// 암호화된 데이터를 복호화합니다.
if ((plaintext_len = EVP_CIPHER_CTX_block_size(ctx)) == 0) {
printf("EVP_CIPHER_CTX_block_size() failedn");
EVP_CIPHER_CTX_free(ctx);
return -1;
}
// 암호화된 데이터를 복호화합니다.
if (!mdecrypt_generic(ctx, ciphertext, ciphertext_len, plaintext, &plaintext_len)) {
printf("mdecrypt_generic() failedn");
EVP_CIPHER_CTX_free(ctx);
return -1;
}
// 복호화된 데이터를 출력합니다.
printf("복호화된 데이터: %sn", plaintext);
EVP_CIPHER_CTX_free(ctx);
return 0;
}
이 코드에서는 `mdecrypt_generic()` 함수를 사용하여 암호화된 데이터를 복호화하고, 복호화된 데이터를 출력합니다.
2025-06-28 17:51