Мне нужно выполнить шифрование DES на сервере, отправить шифрование клиенту и расшифровать его на клиенте.
Сервер:
const EVP_CIPHER *c = EVP_des_cbc();
EVP_CIPHER_CTX *x = malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(x);
EVP_EncryptInit (x, c, key, iv); // initlizing encryption
EVP_EncryptUpdate (x, encryptedDataBuffer, &encryptedDataLength, dataBuffer, strlen(dataBuffer));
EVP_EncryptFinal (x, encryptedDataBuffer + encryptedDataLength, &encryptedDataLength);
write(client_sock , encryptedDataBuffer , encryptedDataLength);
printf("Encrypted Data Sent to Client\n");
Здесь сервер шифрует данные и отправляет ихклиенту.Пока все хорошо.
Клиент:
serverDataLength = recv(sockfd , dataBuffer , MAXDATASIZE , 0);
printf("Encrypted Data is Received\n");
const EVP_CIPHER *c = EVP_des_cbc();
EVP_CIPHER_CTX *x = malloc(sizeof(EVP_CIPHER_CTX));
EVP_CIPHER_CTX_init(x);
EVP_DecryptInit(x, c, key, iv);
EVP_DecryptUpdate(x, decryptedDataBuffer, &sizeOfDecryptedBuffer , dataBuffer, serverDataLength);
EVP_DecryptFinal(x, decryptedDataBuffer+sizeOfDecryptedBuffer, &sizeOfDecryptedBuffer);
printf("\n\nDecrypted Data: %s\n", decryptedDataBuffer);
Клиент получает данные и расшифровывает их.
Однако проблема заключается в том, что когда я печатаю дешифрованные данные в клиенте, онпечатает некоторые значения мусора вместе с расшифрованными данными.Как мне избавиться от этих значений мусора?Клиент / сервер работает нормально, проблем нет.
Я не хочу размещать здесь полный код, он будет запутан.Я почти уверен, что проблема где-то в опубликованном коде.
Спасибо!