OpenSSL RSA_public_encrypt странное поведение

пытаюсь написать простую процедуру шифрования в C, используя OpenSSL, и янашел что-то странное. Я'Я не гуру C и не профессионал OpenSSL. Так что я мог ошибиться.

Функция выглядит следующим образом

char *rsa_encrypt(char *data)
{
    const char xponent_in_hex[] = "010001";
    const char modulus_in_hex[] = "D0BA16F11907E7B0819705A15264AC29BEE9F1EC5F22642992
    D3E27100B7F212864A624A12FFB6D531712B0B0225AAD0C2E313D077A7DB2A5A33483EEFF41A9D";    

    BIGNUM *xponent = NULL;
    BIGNUM *modulus = NULL;

    BN_hex2bn(&xponent, xponent_in_hex);
    BN_hex2bn(&modulus, modulus_in_hex);

    RSA *rsa = RSA_new();
    rsa->e = xponent;
    rsa->n = modulus;
    rsa->iqmp = NULL;
    rsa->d = NULL;
    rsa->p = NULL;
    rsa->q = NULL;

    char encoded[512] = { 0 };
    RSA_public_encrypt(
    strlen(data), 
    (const unsigned char *)data, 
    (unsigned char *)encoded,
    rsa, 
    RSA_PKCS1_OAEP_PADDING
);

    RSA_free(rsa);

    return (encoded);
}

int _tmain(int argc, _TCHAR* argv[])
{
    printf("%s\n", base64_encode(rsa_encrypt("ABC")));
    printf("%s\n", base64_encode(rsa_encrypt("ABC")));
    printf("%s\n", base64_encode(rsa_encrypt("ABC")));
}

Я вызываю эту функцию для одних и тех же данных несколько раз, и она генерирует разные значения при каждом вызове. Это видимонеправильно так какпоказатель степени а такжемодуль для созданногоСтруктура RSA постоянны и входные данные одинаковы при каждом вызове.

Так почемуRSA_public_encrypt так себя ведет?

Как мне сгенерировать открытый ключ для шифрования RSA на основепоказатель степени а такжемодуль?

И где ясделали ошибку?

Ответы на вопрос(2)

Ваш ответ на вопрос