2013-08-04 3 views
10

Было сказано, что генератор случайных чисел в Python опирается наСоздание «невзламываемым» «случайное» число с Python

time 

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

23987429038409238409283 

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

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

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

+3

Это действительный и простой вопрос на Python, с простым ответом, который является 'random.SystemRandom', так позвонить, чтобы закрыть это от слишком широка просто глупо. –

+0

закрыты хакерами, которые не хотят, чтобы мы знали, как это сделать? –

+0

Какая глупость, чтобы закрыть вопрос! Слишком широкий? Есть один и только один ответ. На языке приложения используйте инструмент, предназначенный для «действительно случайных». Есть ли способ удалить людей Кармы для закрытия вопросов? –

ответ

19

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

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

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

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

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

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

например.

>>> import sys 
>>> import random 
>>> rng = random.SystemRandom() 
>>> rng.random() 
0.7195432667967437 
>>> rng.randint(0, sys.maxint) 
3614556690529452993 
Смежные вопросы