Создание "uncrackable" "случайного" номера с Python

Было сказано, что генератор случайных чисел Python полагается на

 time

что означает, что если бы я хотел создать случайное число, подобное этому

  23987429038409238409283

и сохраните его в куки файлы браузера для "аутентификации"

Возможно, кто-то может найти это число на основе "времени".

так что вопрос в том, как мне создать случайное число, которое нельзя угадать другими, которые знают о кодах.

Ответ 1

Вы можете использовать random.SystemRandom, если он доступен в вашей системе:

http://docs.python.org/2/library/random.html#random.SystemRandom

Класс, который использует функцию os.urandom() для генерации случайных чисел из источников, предоставляемых операционной системой. Не доступен для всех систем. Не полагается на состояние программного обеспечения, и последовательности не воспроизводятся.

http://docs.python.org/2/library/os.html#os.urandom

Возвращает строку из n случайных байтов, подходящих для использования в криптографии.

Эта функция возвращает случайные байты из источника случайности, специфичного для ОС. Возвращенные данные должны быть непредсказуемыми для криптографических приложений, хотя его точное качество зависит от реализации ОС.

например.

>>> import sys
>>> import random
>>> rng = random.SystemRandom()
>>> rng.random()
0.7195432667967437
>>> rng.randint(0, sys.maxint)
3614556690529452993