簡體   English   中英

MD5在C中轉換為十六進制字符

[英]MD5Convert to hex char in C

void MD5Convert(unsigned char* BufferMD5, unsigned char* DstMD5, int size)
{
    unsigned char digest[16];
    char buf[32];
    
    int tmp_i;
    int counter_DstMD5 = 0;
    int i = 0;
    //16 +16 = 32
    char tmp_c[2];
    for (i; i < size; i++)
    {
        tmp_i = BufferMD5[i];
        //itoa(tmp_i, tmp_c, 16);
        sprintf_s(tmp_c, "%02X", BufferMD5[i]);
        DstMD5[counter_DstMD5] = tmp_c[0];
        counter_DstMD5++;
        DstMD5[counter_DstMD5] = tmp_c[1];
        counter_DstMD5++;   
    }
}

視覺工作室給我以下信息:

“運行時檢查失敗 #2 - 圍繞變量 'tmp_c' 的堆棧已損壞。”

上面的代碼不適用於visual studio + c,我已經嘗試了一切,但它最終會在某個地方溢出。

抱歉,如果問題措辭不當,但我找不到可能的替代方案

在這里查看代碼

sprintf_s(tmp_c, "%02X", BufferMD5[i]);

您需要 3 個字符來存儲兩個字符的字符串,因為您需要容納空終止字符。 tmp_c太短,你寫的超出了它的范圍。

char tmp_c[3];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM