почему perl, ruby ​​use / dev / urandom

Я strace простой сценарий с использованием perl и bash.

 $ strace perl -e 'echo "test";' 2>&1 | grep 'random' open("/dev/urandom", O_RDONLY) = 3 $ strace bash 'echo "test"' 2>&1 | grep 'random' $ 

Почему perl нуждается в генераторе псевдослучайных чисел для такого тривиального сценария? Я ожидал бы открытия /dev/urandom только после первого использования случайных данных.

Изменить: я также тестировал python и ruby

 $ strace python -c 'print "test"' 2>&1 | grep random $ $ strace ruby -e 'print "test\n"' 2>&1 | grep random open("/dev/urandom", O_RDONLY|O_NOCTTY|O_NONBLOCK|O_CLOEXEC) = 3 

Почему perl и ruby ​​открывают его в разных режимах?

One Solution collect form web for “почему perl, ruby ​​use / dev / urandom”

Попробуйте найти «Отказ в обслуживании через атаки алгоритмической сложности».

Короче говоря, если скрипт Perl принимает внешний вход (из файла, сети и т. Д.) И сохраняет эти данные в хэше, злоумышленник, который может влиять на данные, может использовать алгоритм хеширования для ухудшения хэшей (O (1) поиска) в связанных списков (O (N)). Чтобы защитить от этого типа атаки, определенные параметры алгоритма хеширования рандомизируются при запуске программы, так что злоумышленник не может построить последовательность хеш-ключей, которые вызовут проблему.

Это явно не относится к Perl. Любая программа, которая использует алгоритм хеширования, потенциально уязвима для этого типа атаки.

  • Возможность использования трубы для рубино-питонной связи
  • Каковы эквиваленты Python для пакета Ruby's bundler / Perl?
  • Поддерживает ли Ruby условные регулярные выражения
  • Regexp находит самый длинный общий префикс двух строк
  • Можно ли использовать Lisp / Scheme в качестве языка сценариев?
  • В чем разница между Ruby Hash и Python?
  • Написание файла shredder в python или ruby?
  • Веб-службы Amazon: python или ruby?
  • Python - лучший язык программирования в мире.