Скрипты выполнялись под Python версии 2.7.9.
Генерация случайных чисел используется для:
- создания идентификаторов сессий,
- создания токенов (CSRF и т.п.),
- создания произвольных паролей и кодов доступа,
- создания произвольных последовательностей данных в играх,
- создания уникальных номеров для маркетинговых акций (подарочные карты, розыгрыш призов по коду и т.п.).
В Python существует несколько основных модулей и классов, связанных с генерацией псевдослучайных чисел:
- _random — реализует алгоритм Mersenne Twister, написан на языке C;
- класс Random — наследует _random, написан на языке Python;
- модуль os — предоставляет доступ к внешнему источнику случайных чисел, в случае Linux — это /dev/urandom;
- класс SystemRandom наследует Random, но для генерации случайных чисел обращается к os.urandom;
- класс WichmannHill наследует Random, реализует алгоритм Вихмана-Хилла для генерации псевдослучайных чисел.
В качестве основного генератора псевдослучайных чисел Python использует Mersenne Twister, доступ к которому предоставляет класс Random. Mersenne Twister имеет период 2 ** 19937-1. Это один из наиболее протестированных генераторов случайных чисел. Основная часть реализована на C. К сожалению, не подходит для криптографических задач.
Читать далее →