При хешировании коротких (<несколько K?) Строк (или файлов) можно создать два хэш-ключа md5, один для фактической строки, а второй для обратной строки, соединенных с короткой асимметричной строкой. Пример: md5 (обратный (строка || '1010')). Добавление дополнительной строки гарантирует, что даже файлы, состоящие из серии одинаковых битов, сгенерируют два разных ключа. Пожалуйста, поймите, что даже при этой схеме существует теоретическая вероятность того, что два хеш-ключа будут идентичны для неидентичных строк, но вероятность кажется чрезвычайно малой - что-то порядка квадрата вероятности одиночного столкновения md5 и экономии времени может быть значительным, когда количество файлов растет. Можно также рассмотреть более сложные схемы создания второй струны,
Чтобы проверить наличие коллизий, можно запустить этот тест на уникальность хэш-ключей md5 для всех бит_векторов в базе данных:
выберите md5 (bit_vector), count (*), bit_and (bit_vector) из db с
группой bit_vector по md5 (bit_vector), bit_vector, имеющим bit_and (bit_vector) <> bit_vector