我需要实现一个哈希函数,该函数生成一个32位(足够唯一)的值,以便在发送消息时使用消息标识符。我保持一个序列号并继续将它与其他一些变量一起递增并总结它们并希望获得总数的哈希值(我计划使用MD5,然后选择输出的前32位)。但是我看到Linux中的MD5功能只接受字符串输入,
MD5((unsigned char*)data, strlen(data), result);
我想过sprintf'ing'total'然后计算哈希值,但是想知道是否有一些函数可以直接计算'total'数值的MD5?
答案 0 :(得分:2)
unsigned char *
并不暗示字符串或以空字符结尾的字符串。至少不是在这种情况下。它只是指向N个8位字的指针,没有任何值限制。因此,您不必拥有任何snprintf
或类似内容,以便将数据转换为ASCII字符串。如果有帮助,here是md5sum
工具的来源。