使用UDP发送加密数据 - Openssl c ++

时间:2012-07-31 18:26:49

标签: c++ sockets networking openssl

以下是我的udp服务器和客户端的部分代码。 我不确定UDP的问题是我的输出很奇怪但是第16个字总是出错了?

define MAX_ENCRYPT_MSG_SIZE 16

在服务器端:

char tempStr[MAX_ENCRYPT_MSG_SIZE];

 /***** GET INPUT CODE HERE *****/

int tempLen = strlen(tempStr)+1;

//encrypt msg
ct = aes_encrypt(ci->getEVPCipherEN(),(unsigned char*) tempStr, &tempLen);

//send msg
rc = sendto(*(ci->getSd()), ct, tempLen, 0,(struct sockaddr *) ci->getCliAddr(),*(ci->getCliLen()));

在客户端:

int iLen = MAX_ENCRYPT_MSG_SIZE;
char msg[MAX_ENCRYPT_MSG_SIZE];

n = recvfrom(*(ci->getSd()), msg, iLen, 0,(struct sockaddr *) ci->getCliAddr(),ci->getCliLen());

char pt[16];
char *plaintext = (char *)aes_decrypt(ci->getEVPCipherDE(),(unsigned char*) msg, &iLen);
//convert back to only 16 bytes
strcpy(pt,plaintext);
if(plaintext == NULL)
{
    std::cout << "Error" << std::endl;
}       
else
{
    std::cout << pt << std::flush;
}

输出:

Sample out put of client side

提前致谢! :)

1 个答案:

答案 0 :(得分:1)

c字符串到底需要空字节的空字节?是吗?

相关问题