需要在服务器上执行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);
客户端接收数据并对其进行解密。
然而问题在于当我在客户端打印解密后的数据时,它会打印一些垃圾值和解密后的数据。我该如何摆脱这些垃圾值?客户端/服务器正常工作,没有问题。
我不想在这里发布完整的代码,那样会很混乱。我相信问题出现在发布的代码中的某个地方。
谢谢!
3DES
比DES
更好,但据我所记,它仍然比AES256
等算法差很多。但无论如何,我们都同意他不应该使用DES
。 :) - Afshin