Я пытаюсь вычислить 8-символьные короткие уникальные случайные имена файлов, скажем, тысячи файлов без вероятного столкновения имен. Является ли этот метод достаточно безопасным?
base64.urlsafe_b64encode(hashlib.md5(os.urandom(128)).digest())[:8]
Изменить
Чтобы быть яснее, я пытаюсь добиться простейшей возможной обфускации имен файлов, загружаемых в хранилище.
Я понял, что 8-символьная строка, достаточно случайная, будет очень эффективным и простым способом хранения десятков тысяч файлов без вероятного столкновения при правильной реализации. Мне не нужна гарантированная уникальность, только достаточно высокая невероятность столкновения имен (речь идет только о тысячах имен).
Файлы хранятся в параллельной среде, поэтому увеличение общего счетчика является достижимым, но сложным. Хранение счетчика в базе данных будет неэффективным.
Я также сталкиваюсь с тем фактом, что random() при некоторых обстоятельствах возвращает одинаковые псевдослучайные последовательности в разных процессах.