【发布时间】:2013-10-21 18:41:04
【问题描述】:
根据 C++ 标准,哈希函数 std::tr1::hash 计算范围为 64 位的哈希值(如果我错了,请纠正我)。但出于好奇,是否有任何机制可以生成范围大于 64 位的哈希值。我的问题可能看起来很奇怪,因为我们使用的整个内存都在 64 位范围内,但我想知道我们如何计算(比如说)80 位大小的哈希值?
编辑:我的错,我假设是 64 位实现。
【问题讨论】:
-
您必须定义自己的哈希数类型(80 位)和自己的哈希函数。我不确定 C++11 是否在 32 位实现上提供 64 位哈希。还可以查看cryptographic hash functions,例如 MD5 或 SHA1
-
是的,加密散列函数可以完成这项工作,但没有任何非加密散列函数(并且也是标准化的)可以完成这项工作吗?
-
你应该解释为什么你想要大的散列......为了什么?请解释为什么
size_t哈希不符合您的需求! -
所以我的密钥类型是无符号字符数组,它本身就是加密函数的输出。而且我想避免再次调用非加密哈希函数(在这种情况下是多余的)。
标签: c++ memory hash hashcode tr1