OpenSSL - How to determine the correct rsa encrypted string length?

I use OpenSSL to encrypt a string. After that, I want to encode the encrypted string using the base64 algorithm, also using OpenSSL. So I found the following code: (bit.ly/adUSEw)

char *base64(const unsigned char *input, int length) {
BIO *bmem, *b64;
BUF_MEM *bptr;

b64 = BIO_new(BIO_f_base64());
bmem = BIO_new(BIO_s_mem());
b64 = BIO_push(b64, bmem);
BIO_write(b64, input, length);
BIO_flush(b64);
BIO_get_mem_ptr(b64, &bptr);

char *buff = (char*)malloc(bptr->length);
memcpy(buff, bptr->data, bptr->length - 1);
buff[bptr->length - 1] = 0;

BIO_free_all(b64);

return buff;
}


int main(int argc, char **argv) {

char *message = "TEST";
char *encryptedString = Encrypt(message);

if (encryptedString == NULL) {
    return 0;
}
else {
    char *output = base64(encryptedString, strlen(encryptedString));
    cout << output << endl;
} }

I noticed that strlen (encryptedString) is not working properly in this case. Sometimes it returns the correct length, but mostly not. So what is the right way to determine the correct length?

+3
source share
1 answer

The size of the encrypted message is exactly the size of the module in a private key. You should get information from there.

strlen,

  • , , ,
  • (, , ) .
+3

Source: https://habr.com/ru/post/1773577/


All Articles