Где я могу найти исходный код os.urandom ()? - PullRequest
0 голосов
/ 08 января 2019

Я хочу изучить и изучить код функции os.urandom() Python 3.7. Я посмотрел на соответствующую стандартную библиотеку os.py, но она там не определена и не импортирована. Я также попытался grep для определения:

/usr/lib/python3.7 $ grep -rFl "def urandom" 2> /dev/null Но ничего. Я подозреваю, что с os.urandom () происходит какая-то магия. Где я могу найти определение функции для изучения и криптоанализа?

1 Ответ

0 голосов
/ 08 января 2019

Множество имен, определенных для модуля os, обрабатываются Modules/posixmodule.c как в системах POSIX, так и в Windows. Обратите внимание, что исходный код находится в C , а не в Python, поскольку для доступа к системным функциям требуется собственный код.

Вы можете видеть, что это os.py исходный код , который либо импортирует posix или nt на основе текущей ОС, где оба эти имени скомпилированы из указанного выше файла posixmodule.c но переименованы, чтобы лучше отражать платформу и указывать, что функциональность отличается между двумя вариантами (вариант nt предоставляет меньше функций).

См. os_urandom_impl() функцию для деталей реализации os.urandom(). Это делегирует внутреннюю функцию, _PyOS_URandom(), которая вместе с другими вспомогательными функциями, необходимыми в начале процесса запуска Python, определяется в Python/bootstrap_hash.c.

...