den*_*isV 6 c++ algorithm hash
有没有办法生成字符串的散列,以便散列本身具有特定的长度?我有一个生成41字节哈希值(SHA-1)的函数,但我需要它最多33个字节(由于某些硬件限制).如果我将41字节的哈希截断为33,我可能(当然!)失去了唯一性.
或者实际上我认为MD5算法很适合,如果我能在你的帮助下找到一些C代码.
编辑:谢谢大家的快速和知识渊博的回复.我选择使用MD5哈希,它适合我的目的.唯一性是一个重要问题,但我不认为这些哈希的数量在任何给定时间都非常大 - 这些哈希代表家庭局域网上的软件服务器,因此最多可能有5个,可能还有10个运行.
计算哈希的方法是不可能的.要将散列长度限制为33个字节,您必须将其删除.您可以xor第一个和最后33个字节,因为这可能会保留更多信息.但即使有33个字节,你也没有那么大的碰撞机会.
md5:http://www.md5hashing.com/c++/
顺便说一句.md5是16个字节,sha1是20个字节,sha256是32个字节,但是作为十六进制字符串,它们的大小都是双倍的.如果你可以存储字节,你甚至可以使用sha256.