У меня есть 2 процесса, связанных с сокетом.Я использую RSA для шифрования и дешифрования сообщений.Клиент имеет следующие ключи:
RSA *client_private_key;
RSA *client_public_key;
RSA *server_public_key;
я хочу сначала зашифровать открытый текст с помощью личного ключа клиента, а затем открытого ключа сервера.
unsigned char *plaintext =
(unsigned char *)"Hello";
int encrypted_length= rsa_prv_encrypt(plaintext, strlen(plaintext), client_private_key, encrypted);
int encrypted_length2 = rsa_pub_encrypt(encrypted, encrypted_length, server_public_key, encrypted2);
encrypted_length2 всегда равно -1,это означает, что с шифрованием что-то пошло не так.
Я проверил следующие сценарии, чтобы убедиться, что функции работают нормально:Зашифровать с помощью закрытого ключа клиента -> Расшифровать с помощью открытого ключа клиентаЗашифровать с помощью открытого ключа клиента -> Расшифровать с помощью ключа личного ключа клиента
Однако двойное шифрование не работает, и я не знаю, почему.Любая идея, в чем может быть проблема, и вторая функция всегда возвращает -1?