0
以下是我的udp服務器和客戶端的部分代碼。 我不確定是否與UDP有關的問題是我的輸出很糟糕,但總是在第16個單詞中出現錯誤?使用UDP發送加密數據 - Openssl C++
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;
}
輸出:
在此先感謝! :)
對不起,你可以進一步詳細說明嗎?我不太明白哪一部分是錯的。 – mister 2012-07-31 18:29:53
你確定你有數組中0字節的空間,這是需要在c中終止基於char數組的字符串嗎? – 2012-07-31 18:32:48
您是否正在提供iLen解密,而不是實際收到的數據大小? – 2012-07-31 18:34:03