客户端加密服务器端解密文件,使用openssl在客户端/服务器中进行DES加密/解密

在服务器端使用DES_CBC加密数据并发送给客户端后,客户端在解密时发现解密后的数据中混有垃圾值。已确认服务器加密和发送过程正常。问题可能出在客户端解密阶段。客户端代码使用相同的DES_CBC算法、密钥和初始化向量进行解密,但解密后的数据仍包含非预期内容。寻求解决方案以消除解密后的垃圾值。
摘要由CSDN通过智能技术生成

我需要在服务器中执行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);

客户端接收数据并对其进行解密.

然而问题是当我在客户端打印解密数据时,它会打印一些垃圾值以及解密数据.如何摆脱这些垃圾值?客户端/服务器工作正常,没有问题.

我不想在这里发布完整的代码,它会变得混乱.我很确定问题出现在发布的代码中.

谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值