Не могли бы вы написать пример кода js и php так как второй не знаю
С которым я не согласен
это в какой-то мере оскорбление
Вы правы, что он не может гарантировать уникальность, однако есть приблизительно 3.402823669209387e + 38 различных значений в 32-разрядном шестнадцатеричном значении (16 ^ 32). Это означает, что, предполагая, что математика за алгоритмом дает хорошее распределение, ваши шансы феноменально малы, что будет дубликат. Вы должны иметь в виду, что можно дублировать, когда вы думаете о том, как он будет использоваться. MD5 обычно используется, чтобы определить, было ли что-то изменено (например, контрольная сумма). Было бы невероятно маловероятно, чтобы что-то можно было изменить и привести к той же контрольной сумме MD5.
Изменить: (учитывая недавние новости re: SHA1 хэши) Ответ выше, по-прежнему сохраняется, но вы не должны ожидать, что хеш MD5 будет служить как любая проверка безопасности против манипуляции. SHA-1 хешируется как 2 ^ 32 (более 4 миллиардов) раз меньше, чем вероятность столкновения, и было продемонстрировано, что можно получить вход для получения того же значения. (Это было продемонстрировано против MD5 довольно давно). Если вы хотите, чтобы никто не злонамеренно модифицировал что-то, чтобы получить такое же значение хэша, в наши дни вам нужно иметь SHA-2, чтобы получить надежную гарантию.
С другой стороны, если это не в контексте проверки безопасности, MD5 по-прежнему имеет свою полезность.
Можно было бы утверждать, что хэш SHA-2 достаточно дешев для вычисления, что вы все равно должны использовать его.