Как хешировать GUID и 64-битную метку времени в другой GUID - PullRequest
1 голос
/ 25 июня 2009

Мы работаем с частной базой данных и имеем таблицу, семантический составной ключ которой состоит из 128-битного GUID и 64-битной временной метки. «Семантический составной ключ» в том смысле, что в таблице может встречаться несколько записей с одинаковым GUID, а также несколько записей с одной и той же временной меткой; однако пара (GUID, отметка времени) является уникальной. В качестве усовершенствования для лучшей поддержки механизма хеширования мы можем сделать метку времени полностью уникальной, например, увеличивая его на миллисекунду.

Собственная база данных довольно минималистична и имеет 128-битный хэш-ключ, который мы хотели бы использовать для быстрого доступа. Таким образом, нам нужно хешировать GUID и метку времени в 128-битное поле, то есть в другой GUID.

Можете ли вы предложить хеш-функцию, которая лучше всего подходит для этой цели?

1 Ответ

3 голосов
/ 25 июня 2009

Как насчет MD5? Он имеет правильную длину и хорошие характеристики распределения. Это вычислительно более интенсивно, чем XOR двух ваших полей, правда.

...