簡體   English   中英

兩個不同數組的相等性

[英]Equality of two different arrays

如何比較t2中的結果(哈希值)

unsigned char t2[128];

SHA1(t1, strlen(t1),t2);

另一個哈希值為unsigned char t3[128]; 我有一個“字符串”(字符序列)?

逐元素相等失敗,並且在打印t1時出現怪異的符號

您的問題需要進一步澄清。 然而,

Elementwise equality fails and weird symbols appear when printing t1

從這一行看來,數組t1沒有正確地以NULL終止,即沒有資格用作string

我假設所有的tx數組都是哈希值:查看SHA1聯機幫助頁,沒有關於以NULL結尾的字節或字符編碼的信息。 它大約是bytes所以我想您不應該嘗試將其打印為字符串(即,使用%s )。

// print t1 bytes
for(size_t i=0; i<128; i++)
{
    printf("0x%2X ", t1[i]);
}

AND, strlen可能會返回垃圾,請改用顯式長度:

SHA1(t1, 128, t2);

因此,要比較您的(相同長度)哈希值,可以使用:

int res = memcmp(t2, t3, 128);

要么:

for(size_t i=0; i<128; i++)
{
    if(t2[i] != t3[i])
    {
        printf("Mismatch at index %zu\n", i);
        break;
    }
}

暫無
暫無

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

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