LINUX.ORG.RU

random в python и go

 ,


0

2

Доброго всем дня. Объясните, пожалуйста, почему рандом в питоне раз в 20 медленее гошного 'crypto/rand'?

Конкретно в питоне return open("/dev/random", "rb").read(numbytes), а в go стандартный rand.Reader. Закопался в исходники го, там непонятно вообще ничего, сплошной синтаксический сахар. Заранее спасибо.

★★★★

Python 2 не имеет большого смысла использовать. Но вообще Python язык медленный, так как интерпретируемый, а Go компилируемый и быстрый. Поэтому и можно ожидать, что что-то в Python работает медленнее, чем в Go. Однако для математических вычислений в Python можно использовать библиотеки, написанные на C/C++ или даже с использованием GPU, тогда вычисления значительно ускорятся.

Partisan ★★★★
()

Это не питоновый рандом, это системный рандом пригодный для криптогрофических целей. Он никогда не будет быстрым и ему нужно много энтропии, ты исчерпаешь пул и приехали. В го почти наверняка /dev/urandom или что-то ещё более убогое, это никуда не годится.

anonymous
()
Ответ на: комментарий от anonymous

getrandom() там внутри, то есть ты прав. Но вот почему urandom никуда не годится - это ты расскажи конечно.

RedPossum ★★★★★
()
Последнее исправление: RedPossum (всего исправлений: 1)

Потому что это не «в питоне рандом», а системный криптографический. Есть быстрый говнорандом.

anonymous
()
Ответ на: комментарий от dnb

Never use /dev/random. On OpenBSD, it does the same as /dev/urandom, but on many other systems, it misbehaves. For example, it may block, directly return entropy instead of using a stream cipher, or only return data from hardware random generators.

Ref: https://man.openbsd.org/random.4

Т.ч. не слушай анонимных кукаретиков, они туфту гонят.

/dev/urandom is a correct way to go

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)
Ответ на: комментарий от beastie

Вобще-то анон говорит дело: по твоим же ссылкам нигде не заявлено что urandom криптостойкий, иное дело что неясно является ли сам random таким.

pylin ★★★★★
()
Ответ на: комментарий от beastie

Ну вот, после этого ребята из опенка будут говорить что-то за безопасность. Клоуны, да и только. Нетбсд вообще не серьёзно понимать.

anonymous
()
Ответ на: комментарий от anonymous

Знаешь, я как-то ребятам из опенька больше доверяю, чем залётному анонимному со старыми урбан-легендами.

beastie ★★★★★
()
Ответ на: комментарий от beastie

доверяю

Знаешь, после заявлений из опенка по поводу багов openssh и их отношения к проблемам, всем на них положить. У них картонная безопасность. Это всё ещё не имеет никакого отношения с проблеме в топике, линуксовый urandom не отвечает даже к минимальным требованиям (как в xbsd, согласно заявлениям некоторых разработчиков).

А твоё отношение, как это принято говорить, biased. Нарциссичные клоуны и ничего более.

anonymous
()
Ответ на: комментарий от anonymous

линуксовый urandom не отвечает даже к минимальным требованиям

В Go он не только в линуксе используется // +build darwin dragonfly freebsd linux nacl netbsd openbsd plan9 solaris

dnb ★★★★
() автор топика
Ответ на: комментарий от anonymous

Ты бы лучше пруфы принес, а не выкобенивался из под анона чтобы тряпками не погнали

Dred ★★★★★
()

Для Python'a дофига рандом-библиотек разного уровня скорости и криптоскойкости, просто по дефолту предполагается, что ты пишешь на нем, что-то более близкое к скрипту, чем к программе, критичной к скорости выполнения.

anonymous
()
Ответ на: комментарий от deterok

Будто бы я пишу тесты. И так сойдет :)

dnb ★★★★
() автор топика
Ответ на: комментарий от dnb

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

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.