【发布时间】:2018-05-14 18:36:04
【问题描述】:
我需要在服务器中进行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);
客户端接收数据并解密。
但是问题是当我在客户端打印解密数据时,它会打印一些垃圾值以及解密数据。我如何摆脱那些垃圾值?客户端/服务器工作正常,没有问题。
我不想在这里发布完整的代码,它会变得很乱。我很确定问题出在发布的代码中。
谢谢!
【问题讨论】:
标签: c encryption openssl client-server des