Почему mbedtls_rsa_rsaes_pkcs1_v15_encrypt () делает неправильное шифрование? - PullRequest
0 голосов
/ 20 сентября 2019

Я использую библиотеку mbedtls для своего небольшого криптографического приложения.

API-интерфейс mbedtls имеет следующую функцию:

int mbedtls_rsa_rsaes_pkcs1_v15_encrypt( mbedtls_rsa_context *ctx,
                                 int (*f_rng)(void *, unsigned char *, size_t),
                                 void *p_rng,
                                 int mode, size_t ilen,
                                 const unsigned char *input,
                                 unsigned char *output );

Я просто хочу зашифровать "Hello world!"Строка с помощью этого.Я делаю это так:

static int myrand(void *rng_state, unsigned char *output, size_t len)
{
    size_t use_len;
    int rnd;

    (void)rng_state;

    while (len > 0) {
        use_len = len;

        if (use_len > sizeof(int))
            use_len = sizeof(int);

        rnd = rand();
        memcpy(output, &rnd, use_len);
        output += use_len;
        len -= use_len;
    }

    return 0;
}


int mbed_rsa_pub_enc(uint8_t *from, unsigned int from_len,
        uint8_t *to, unsigned int *to_len)
{
    int res;

    if ((res = mbedtls_rsa_rsaes_pkcs1_v15_encrypt(&rsa_key, myrand, NULL,
                MBEDTLS_RSA_PUBLIC, (size_t)from_len,
                (const unsigned char *)from,
                (unsigned char *)to)) != 0) {
        *to_len  = 0;
        EMSG("Public encription FAILED with err = -0x%X", res * (-1));

        return TEE_CRYPTO_ERR;
    }

    *to_len = rsa_key.len;
    EMSG("Public encryption success\n");

    return TEE_CRYPTO_OK;
}

Я запустил код выше и получил это:

Encrypted data: cb:26:1f:b6:62:38:be:33:90:a1:66:3c:13:27:2f:35:8c:f0:79:5d:af:fd:39:d0:00:00:00:00:49:00:00:00:24:05:f4:b4:24:05:f4:b4:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:4c:fb:f3:b4:48:00:00:00:10:00:00:00:48:65:6c:6c:6f:20:57:6f:72:6c:64:21:31:00:00:00:4c:05:f4:b4:4c:05:f4:b4:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:30
:00:00:00:60:00:00:00:00:00:00:00:00:00:00:00:cc:06:e1:b4:18:04:86:00:28:4c:86:00:48:4d:86:00:70:4d:86:00:90:4e:86:00:30:4f:86:00:d0:4f:86:00:70:50:86:00:10:51:86:00:00:00:00:00:00:00:00:00:01:00:00:00:40:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 

Этот вывод содержит мою исходную строку в открытом виде:

... 00:00:48:65:6c:6c:6f:20:57:6f:72:6c:64:21:31:00:00 ... 

Это мой "Привет, мир!"Мне кажется, что это неправильно.

Где у меня ошибка?Может ли кто-нибудь помочь мне, пожалуйста?

...