【问题标题】:MD5 hashing of a number sequence数字序列的 MD5 散列
【发布时间】:2012-10-13 23:23:04
【问题描述】:

我需要实现一个哈希函数,它产生一个 32 位(足够唯一的)值,以便在发送消息时用作消息标识符。我维护一个序列号,并与其他一些变量一起不断增加它,并将它们相加并希望得到总数的哈希值(我计划为此使用 MD5,然后选择输出的前 32 位)。但是我看到Linux中的MD5函数只接受字符串输入,

MD5((unsigned char*)data, strlen(data), result);

我想过sprintf'ing'total'然后计算hash,但想知道是否有一些函数可以直接计算'total'的数值的MD5?

【问题讨论】:

    标签: c++ c md5


    【解决方案1】:

    unsigned char * 不暗示字符串或以空字符结尾的字符串。至少在这种情况下不是。它只是一个指向 N 个 8 位字的指针,没有任何值限制。因此,您不必拥有任何 snprintf 或类似的东西就可以将您的数据转换为 ASCII 字符串。如果有帮助,heremd5sum 工具的来源。

    【讨论】:

    • 谢谢。那么对于二进制数据输入,长度(第二个参数)应该是变量类型的大小吧?
    • @source.rar: 嗯,应该指出指针指向的字节数。如果您传递一个指向int 的指针,那么它应该是sizeof(int)。如果您传递的是 ASCII 字符串,那么它应该是其中的字符数。如果这是某个数组,则如果数组中的元素数乘以该数组的单个元素的大小,则为 size。
    猜你喜欢
    • 2012-06-17
    • 1970-01-01
    • 2014-11-18
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多