Я использую 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()
,Других решений пока нет …