EDIT:
Хлоп! Я забыл об этом древнем ответе. Чтобы прояснить путаницу, созданную моей наивностью (в соответствии с комментариями, сделанными ниже): MD5 (как и большинство полезных хэшей по своей природе) не инъективны, поэтому их вывод не гарантированно будет уникальным для всех входных данных.
Если коллизии хешей являются проблемой (в данном случае они есть), использование этого метода потребует проверки после хеширования, был ли уже сгенерирован идентичный ключ.
Поскольку uniqid использует текущее время в микросекундах для генерации guid, практически нет шансов, что вы когда-нибудь столкнетесь с одним и тем же дважды.
Так что, если вы просто используете его для создания уникальных имен файлов, uniqid () будет достаточно. Если вы хотите, чтобы пользователи не могли угадать guid, вы также можете сделать его сложнее и md5.