[英]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.