我需要在服务器中执行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);
客户端接收数据并对其进行解密.
然而问题是当我在客户端打印解密数据时,它会打印一些垃圾值以及解密数据.如何摆脱这些垃圾值?客户端/服务器工作正常,没有问题.
我不想在这里发布完整的代码,它会变得混乱.我很确定问题出现在发布的代码中.
谢谢!