алгоритм и размер std :: hash

Я использую C ++ 11 и алгоритм std :: hash.
Мне было интересно, какая актуальная хеш-реализация используется?
Я бы предположил, MD5 или SHA, но я не могу копать информацию из интернета.

Кроме того, я хотел бы знать фактическую возвращаемую битовую ширину хэша, поскольку я должен хранить это в MySQL.

Наконец, предпочтительно ли использовать std :: hash, скажем, в какой-нибудь другой библиотеке, такой как crypto ++?

3

Решение

Алгоритм выбран для std::hash зависит только от реализации. Вероятно, ни MD5, ни SHA не используются, так как они будут убийцами производительности для своей цели.

Большинство реализаций будет гораздо более тривиальным, чем упомянутое выше, поскольку нет криптографических требований для std::hash в то время как MD5 и SHA были разработаны для криптографических целей.

требования из std::hash гораздо менее строгие

  1. Принимает один параметр типа Key,
  2. Возвращает значение типа size_t это представляет значение хеш-значения параметра.
  3. Не выдает исключений при вызове.
  4. Для двух параметров k1 а также k2 которые равны, std::hash<Key>()(k1) == std::hash<Key>()(k2),
  5. Для двух разных параметров k1 а также k2 которые не равны, вероятность того, что std::hash<Key>()(k1) == std::hash<Key>()(k2) должно быть очень маленьким, приближается 1.0/std::numeric_limits<size_t>::max(),
8

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]