我正在使用 C++11 和 std::hash 算法。我想知道,使用的是什么实际的哈希实现?我会假设 MD5 或 SHA,但我无法从互联网上挖掘任何信息。
另外,我想知道哈希的实际返回位宽,因为我必须将它存储在 MySQL 中。
最后,是否最好使用 std::hash,而不是其他一些库,例如 crypto++ ?
选择的算法std::hash
完全依赖于实现。可能既不使用 MD5 也不使用 SHA,因为它们会成为性能杀手。
大多数实现将比上面提到的要简单得多,因为没有加密要求,std::hash
而 MD5 和 SHA 是为加密目的而开发的。
的要求不std::hash
那么严格:
Key
。size_t
表示参数哈希值的类型值。k1
和k2
相等,std::hash<Key>()(k1) == std::hash<Key>()(k2)
。k1
,应该很小的概率,接近.k2
std::hash<Key>()(k1) == std::hash<Key>()(k2)
1.0/std::numeric_limits<size_t>::max()