如何比较t2(哈希值)
中的结果unsigned char t2[128];
SHA1(t1, strlen(t1),t2);
使用另一个哈希值unsigned char t3[128];
作为'字符串'(字符序列)?
元素相等失败,打印t1
时出现奇怪的符号答案 0 :(得分:0)
您的问题需要进一步澄清。但是,
Elementwise equality fails and weird symbols appear when printing t1
从这一行开始,似乎数组t1
未正确NULL
终止,即没有资格用作string
。
答案 1 :(得分:0)
我假设您的所有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;
}
}