Исследователи безопасности обратили внимание (http://franklinta.com/2014/08/31/predicting-the-next-math-ra.../) на проблемы линейных генераторов псевдослучайных чисел, позволяющих легко предсказать последовательность значений, зная одну из сгенерирванных последовательностей или подобрав начальный seed. В частности, обращается внимание на плачевное состояние штатных генераторов псевдослучайных чисел Java и Firefox. Код программы (https://github.com/fta2012/ReplicatedRandom) для предсказания выдаваемых значений опубликован на GitHub. Дополнительно подготовлена (https://peks.as/experiments/random/) реализация в форме web-приложения на JavaScript.
Метод работает для Math.random() и nextDouble() из java.util.Random, а также для JavaScript-реализации Math.random() из состава Firefox. Зная одно уже сгенерированное значение можно предсказать дальнейшую последовательность значений, выдаваемых текущим объектом Random. В качестве решения при необходимости генерировать надёжные случайные значения рекомендуется использовать Java-класс SecureRandom (http://docs.oracle.com/javase/6/docs/api/java/security/Secur...) или использовать Web Cryptography API (http://www.opennet.me/opennews/art.shtml?num=35788), который уже появился в Chrome 37 и ожидается (https://bugzilla.mozilla.org/show_bug.cgi?id=865789) в Firefox.URL: http://franklinta.com/2014/08/31/predicting-the-next-math-ra.../
Новость: http://www.opennet.me/opennews/art.shtml?num=40498
> плачевное состояние штатных генераторов псевдослучайных чисел FirefoxИ эта мозилла делает NSS (Network Security Services)
> И эта мозилла делает NSS (Network Security Services)в теме не разбирайся @ пиши чушь
Мну напрягает наличие какого-то облачного генератора. Который хотят предложить.
Да, чтобы АНБ не нужно было угадывать случайные числа - давайте просто запрашивать эти числа у АНБ напрямую! :)
Какие ещё облачные сервисы, ты о чём?
Эти "исследователи" - натуральные кэпы. Использовать штатный генератор _любого_ языка в криптографических целях будет только кретин. Это всем известно и никому не интересно. Новость ни о чём.
о да, все поголовно используют нештатные средства или делают собственные реализации. а если сделать не могут то опускают руки и честно говорят заказчику - мы не можем, там на генераторе псевдослучайных чисел надо использовать нештатные средства.
В криптографических целях нужно использовать криптографические библиотеки. В них будет подходящий генератор. А штатный генератор придумали в других целях, для которых предсказуемость - не проблема.
случайные числа могут использоваться не только в криптографических алгоритмах, с того важность обнаруженной проблемы не становится меньше
Во-первых: а каким ещё целям, кроме криптографических, может помешать предсказуемость?
Во-вторых: называть это "обнаруженной проблемой" некорректно, поскольку это известно многие десятилетия.
по поводу "во первых" даже в википедии написано "от метода Монте-Карло и имитационного моделирования до криптографии", так вот этим целям и может помешать.
по поводу "во вторых" то что о проблеме известно это не значит что на неё надо забить и ничего с этим не делать, надо её как то решать, или вы с этим не согласны?
Методу Монте-Карло и имитационному моделированию предсказуемость помешать не может в принципе. Неравномерность распределения была бы помехой, но её здесь нет.Проблема уже давно решена путём создания криптографических библиотек. Кому мешает предсказуемость, те используют их. А для моделирования важна в первую очередь скорость, при том, что все непредсказуемые алгоритмы невероятно тормозные.
непредсказуемых алгоритмов нет, вопрос в количестве вводных. Потому они и псевдослучайные числа.
Давай проверим это практически. Я ща запущу генератор псевдослучайных чисел и выдам тебе сколько хочешь первых элементов последовательности. Ты сможешь угадать следующий?
> Давай проверим это практически. Я ща запущу генератор псевдослучайных чисел и выдам
> тебе сколько хочешь первых элементов последовательности. Ты сможешь угадать следующий?ещё раз - вопрос в количестве вводных.
>> Давай проверим это практически. Я ща запущу генератор псевдослучайных чисел и выдам
>> тебе сколько хочешь первых элементов последовательности. Ты сможешь угадать следующий?
> ещё раз - вопрос в количестве вводных.Ещё раз, сколько вам этих вводных надо из последовательности? Допустим, я возьму TinyMT у которого 127 бит пространства состояния, сколько вам потребуется 32-х битных членов псевдослучайной последовательности, определённой этим пространством, чтобы восстановить все 127 бит?
>>> Давай проверим это практически. Я ща запущу генератор псевдослучайных чисел и выдам
>>> тебе сколько хочешь первых элементов последовательности. Ты сможешь угадать следующий?
>> ещё раз - вопрос в количестве вводных.
> Ещё раз, сколько вам этих вводных надо из последовательности? Допустим, я возьму
> TinyMT у которого 127 бит пространства состояния, сколько вам потребуется 32-х
> битных членов псевдослучайной последовательности, определённой этим пространством,
> чтобы восстановить все 127 бит?Дамп памяти, алгоритм, содержание регистров процессора. Неужели непонятно, что под вводными понимается не только последовательность на выходе генератора?
От того что вы будете использовать другой алгоритм, числа не станут реально случайными, алгоритмы предназначены для генерации псевдослучайных последовательностей, с определёнными свойствами, на основании которых можно строить те или иные алгоритмы. Если для каких то задач достаточно просто равномерного распределения, то нет смысла всегда использовать более сложные алгоритмы.
>>>> Давай проверим это практически. Я ща запущу генератор псевдослучайных чисел и выдам
>>>> тебе сколько хочешь первых элементов последовательности. Ты сможешь угадать следующий?
>>> ещё раз - вопрос в количестве вводных.
>> Ещё раз, сколько вам этих вводных надо из последовательности? Допустим, я возьму
>> TinyMT у которого 127 бит пространства состояния, сколько вам потребуется 32-х
>> битных членов псевдослучайной последовательности, определённой этим пространством,
>> чтобы восстановить все 127 бит?
> Дамп памяти, алгоритм, содержание регистров процессора. Неужели непонятно, что под вводными
> понимается не только последовательность на выходе генератора?
#include <stdio.h>
main()
{
int n;
infinite:
printf("Попробуйте предсказать следующее случайное число: ");
if(scanf("%d", &n) != 1)
printf("Не жульничать.\n");
else
printf("Следующее случайное число: %d.\n", n ^ 0xBEAF);
goto infinite;
}>:-)
Клёвый цикл, бро.
В имитационном моделировании как раз возможность повторно воспроизвести псевдослучайную последовательность является плюсом.
> случайные числа могут использоваться не только в криптографических алгоритмах, с того важность
> обнаруженной проблемы не становится меньшеОни не ПСЕВДОслучайные, с этого и начинаются все остальные допущения.
>> случайные числа могут использоваться не только в криптографических алгоритмах, с того важность
>> обнаруженной проблемы не становится меньшеОни ПСЕВДОслучайные, с этого и начинаются все остальные допущения.
И только число 4 - по настоящему случайное.
> И только число 4 - по настоящему случайное.Даже местонахождение в той или иной точке пространства электрона относительно ядра атома, ещё факт что имеет случайные координаты :)
42!
Когда поймешь, что случайностей не бывает, поздравь себя.
> Когда поймешь, что случайностей не бывает, поздравь себя.Борьба в квантовой механике между теорией истинной случайности и теорией скрытых переменных длилась несколько десятков лет, но статистика доказывает, что или скрытых переменных нет, или мы не можем их обнаружить.
>> Когда поймешь, что случайностей не бывает, поздравь себя.
> Борьба в квантовой механике междуИли в Вашем ответе на ироничный ответ с намёком(1) на саркастическую подколку с подтекстом(2) нет ни сарказма, ни иронии, или я не могу их обнаружить. </недостаток образования>
(1) поздравления - с диагнозом. (2) см.xkcd шутит над :( Debian-ом.
> статистика доказывает, что или скрытых переменных нет, или мы не можем их обнаружить.
Их там действительно нет, це ж netch.
>В криптографических целях нужно использовать криптографические библиотеки. В них будет подходящий генератор.Ну да, потому что их пишут высокооплачиваемые эксперты, которые относятся к этому со всей ответственностью, в связи с чем там очень редко находят баги и уязвимости... то есть нет, стоп...
>А штатный генератор придумали в других целях, для которых предсказуемость - не проблема.
И что же, если в языке есть специально обозначенный "безопасный генератор случайных чисел", его тоже нельзя использовать, надо полагаться на сторонний велосипед?
> И что же, если в языке есть специально обозначенный "безопасный генератор случайных
> чисел", его тоже нельзя использовать, надо полагаться на сторонний велосипед?1. это где?
2. «безопасный» — для чего?
3. желательно сначала посмотреть реализацию. там должен быть написан используемый алгоритм и всё такое.
> В криптографических целях нужно использовать криптографические библиотеки. В них будет
> подходящий генератор. А штатный генератор придумали в других целях, для которых
> предсказуемость - не проблема.Правильнее даже сказать, что Math.random _обязан_ быть предсказуемым. Хотя, возможно, и не по одному значению, а по текущему seed'у. От него требуется статистическое распределение, а не предсказуемость.
Большинство языков используют rand() из libc, а не изобретают велосипед.
ну конечно и привязать виртуальную машину которая должна равноценно работать в любой ос к платформе или конкретной реализации платформы. одно из преимуществ java это "write once run anywhere", потому язык и нашёл свою нишу в enterprise сегменте.
> одно из преимуществ java это "write once run anywhere"причём находится оно исключительно в головах маркетологов, откуда и транслируется «в мир».
>> одно из преимуществ java это "write once run anywhere"
> причём находится оно исключительно в головах маркетологов, откуда и транслируется «в
> мир».глупости, возможность без проблем запустить программу написанную пару десятков лет назад это преимущество языка которое используется во многих отраслях.
приходи, когда поваришься в кухне «энтеррпрайза» и жаборазработке больших проектов. посмеёмся над этими твоими постами вместе.
вы сейчас похожи на самодовольного начальника который по отечески наставляет подчинённого аргументировано обосновывающего свою мысль "приходи когда поумнеешь", вместе посмеёмся над тем что ты говоришь. высокомерия и понтов полно, но как разумный человек нулевой.
а что поделать, если к астроному пришёл школьник и рассказывает про своё видение устройства вселенной? или долго-долго его обучать, или похлопать по плечу и предложить прийти, когда с ним будет о чём говорить на соответствующем уровне. заниматься обучением я не хочу. поэтому да: «приходи, когда поумнеешь». на этом уровне вести аргументированные дискуссии просто нет смысла.
вот это http://www.acviewer.ru/ один из коммерческих проектов "школьника" на java, так что умнеть лучше начинать вам.
благодарю за иллюстрацию написанного мной.
<offtop>2 дня работы на пайтоне (:</offtop>
фраза о пайтоне не отменяет опыт разработки на яве под андроид, ж2ме и так званый ентерпрайз - так вот - переносимость кода миф. некоторая есть, но приходится постоянно что-то подпиливать.
> <offtop>2 дня работы на пайтоне (:</offtop>мне надо было спорить на денег, что первый из десятка альтернатив будет питон :)
та я вот о перле прочитал и вспомнил что на нём тоже раньше мог (:
у питона для этого почти всё готовое есть. просто дизайн подправить.
> вот это http://www.acviewer.ru/ один из коммерческих проектов "школьника" на java, так
> что умнеть лучше начинать вам.Лично я с интересом бы послушал чем java для целей парсить логи (или выгребать из базы) астера лучше perl-а того же. И кстати твои оценки в каком месте тот же перл не укладывается в run everywhere. Ну или не перла. Задача более чем тривиальная, уверен, не отходя от этой ветки сейчас насоветуют с десяток решений.
java даёт возможность ООП реализации, у перла процедурный подход. я считаю ООП это преимущество.
вот вам хороший пример про "run everyware" http://www.opennet.me/docs/RUS/perl_ipc/
"Сразу хочу огорчить программистов под Windows. К сожалению, некоторые из описанных ниже рецептов под Windows работать не будут."
http://eax.me/perl5-oop/> "Сразу хочу огорчить программистов под Windows. К сожалению, некоторые из описанных ниже
> рецептов под Windows работать не будут."Ты так сказал, как будто это недостаток. Или есть нездоровые люди, которые астериск по винды запускают?
> http://eax.me/perl5-oop/
>> "Сразу хочу огорчить программистов под Windows. К сожалению, некоторые из описанных ниже
>> рецептов под Windows работать не будут."
> Ты так сказал, как будто это недостаток. Или есть нездоровые люди, которые
> астериск по винды запускают?в своё время я смотрел в сторону http://eax.me/perl5-oop/ и в сторону иных вариантов реализаций ООП на перл. я практически уверен что вы даже не пробовали тот вариант что предложили, потому что это костыль прирученный к процедурному языку. такой же костыль как и ООП в PHP.
вопрос был "И кстати твои оценки в каком месте тот же перл не укладывается в run everywhere.", к астериску он отношения не имеет. я ответил.
> такой же костыль как и ООП в PHP.вопрос стоял есть или нет.
я ответил.по поводу неработоспособности POSIX IPC вопросы к реализации POSIX майкрософтом.
>> такой же костыль как и ООП в PHP.
> вопрос стоял есть или нет.
> я ответил.в самом языке нет родной возможности работы в принципах ООП, то что по ссылке это костыль лишь приближающий к возможности работы в этих принципах. делающий "как бы ООП" потому что сам язык процедурный.
> по поводу неработоспособности POSIX IPC вопросы к реализации POSIX майкрософтом.
нет, не к майкрософ, а к вам. именно вы утверждали что выполняется везде, а не майкрософт вот вы теперь за слова и отвечайте. нечего тут стрелки переводить.
> в самом языке нет родной возможности работы в принципах ООП, то что
> по ссылке это костыль лишь приближающий к возможности работы в этих
> принципах. делающий "как бы ООП" потому что сам язык процедурный.не имеет значения.
>> по поводу неработоспособности POSIX IPC вопросы к реализации POSIX майкрософтом.
> нет, не к майкрософ, а к вам. именно вы утверждали что выполняется
> везде, а не майкрософт вот вы теперь за слова и отвечайте.
> нечего тут стрелки переводить.т.е. если я приведу пример платформы, на которой jvm нет или другая, несовместимая реализация, то java с "run evrywhere" сдувается?
> т.е. если я приведу пример платформы, на которой jvm нет или другая,
> несовместимая реализация, то java с "run evrywhere" сдувается?cейчас или исчезнет, если хоть немного мозгов есть, или начнёт бред писать, если совсем дурак.
всё-таки совсем дурак.
>> в самом языке нет родной возможности работы в принципах ООП, то что
>> по ссылке это костыль лишь приближающий к возможности работы в этих
>> принципах. делающий "как бы ООП" потому что сам язык процедурный.
> не имеет значения.конечно не имеет, для костылестроителей. вы мне предлагаете посмотреть в сторону заведомо ущербной реализации ООП вместо того чтобы продолжаться пользоваться нормальной.
>>> по поводу неработоспособности POSIX IPC вопросы к реализации POSIX майкрософтом.
>> нет, не к майкрософ, а к вам. именно вы утверждали что выполняется
>> везде, а не майкрософт вот вы теперь за слова и отвечайте.
>> нечего тут стрелки переводить.
> т.е. если я приведу пример платформы, на которой jvm нет или другая,
> несовместимая реализация, то java с "run evrywhere" сдувается?т.е. вы с логикой видимо не дружите. для java есть jvm и для windows и для linux и для этих платформ будет в jvm будут работать все штатные возможности. в перл для _этих_же_ платформ некоторые из возможностей отличаются в реализации. это значит что написанная программа уже может не работать на какой то из платформе и поэтому принцип "write once run anywhere" не соблюдается. в то время как вы утверждаете об обратном
> конечно не имеет, для костылестроителей.ну вы же призываете пользоваться ОС с ущербной реализацией POSIX :)
> т.е. вы с логикой видимо не дружите. для java есть jvm и для windows и для linux и для этих платформ будет в jvm будут работать все штатные возможности.
в теории. на практике не все жабаподелки работают (одинаково) в oracle-jdk и icedtea, к примеру.
> в перл для _этих_же_ платформ некоторые из возможностей отличаются в реализации.
даже с моим знанием перла я способен написать кроссплатформенный парсер логов астериска. без ООП.
P.S. давайте закончим на этом. думаю разгадка совершенно простая. ключевые слова - "продавать" и название ОС на вашем десктопе. остальное всё притянуто за уши. верно?
То что вы называете "призывом использовать ОС с ущербной реализацией POSIX" это глупость, я вам на примере показал что java работает без проблем на обоих ос, а перл нет. почему вы восприняли сравнение как призыв думаю никто кроме вас того не знает.java используется в банках занимая нишу enterprise уровня, очень неразумно называть банковский софт "жабоподелками". Кроме того у вас очень плохой дар угадывать ОС собеседника, я использую Fedora уже лет 8.
> кроссплатформенный парсер логов астериска. без ООП.Это кощунство.
Если я в проге на java прочитаю настройки из $HOME/.mycoolapp оно на винде заработает? Нет? А если попробую создать файл с именем con или prn? Значит "write once run anywhere" в жабке тоже нет. Доступно объясняю или надо еще сильнее разжевать?
В perl хотя бы расписано, что на какой платформе будет работать. А вот дока по жабкеcreateSymbolicLink
public static Path createSymbolicLink(Path link,Path target,FileAttribute<?>... attrs)
throws IOException
Creates a symbolic link to a target (optional operation).
...
Where symbolic links are supported, but the underlying FileStore does not support symbolic links, then this may fail with an IOException. Additionally, some operating systems may require that the Java virtual machine be started with implementation specific privileges to create symbolic links, in which case this method may throw IOException.А теперь начинаем методом научного тыка выяснять, где код заработает, а где получим дулю.
> Если я в проге на java прочитаю настройки из $HOME/.mycoolapp оно на
> винде заработает? Нет?
> В perl хотя бы расписано, что на какой платформе будет работать.
а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированый
> а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированыйпотому что мне понравился этот подход, я использую и инкапсуляцию и полиморфизм и наследование. это ведёт к меньшему объёму кода, меньшему количеству ошибок в этом коде. бОльшая надёжность в работе программы.
>> а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированый
> потому что мне понравился этот подход, я использую и инкапсуляцию и полиморфизм
> и наследование. это ведёт к меньшему объёму кода, меньшему количеству ошибок
> в этом коде. бОльшая надёжность в работе программы.но раз уже пошла такая пьянка. что вы скажите о функциональном программировании?
>>> а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированый
>> потому что мне понравился этот подход, я использую и инкапсуляцию и полиморфизм
>> и наследование. это ведёт к меньшему объёму кода, меньшему количеству ошибок
>> в этом коде. бОльшая надёжность в работе программы.
> но раз уже пошла такая пьянка. что вы скажите о функциональном программировании?по функциональному программированию ничего сказать не могу, я с ним не знаком
>[оверквотинг удален]
>>> потому что мне понравился этот подход, я использую и инкапсуляцию и полиморфизм
>>> и наследование. это ведёт к меньшему объёму кода, меньшему количеству ошибок
>>> в этом коде. бОльшая надёжность в работе программы.
>> но раз уже пошла такая пьянка. что вы скажите о функциональном программировании?
> есть ниши где оно применяется и применяется успешно. как пример для написания
> драйверов конечно подойдёт С на котором только с использованием функционального программирования
> и можно писать, есть конечно и другие ниши. важно понимать что
> ООП даёт преимущества при написании программ, но есть и недостатки. скорость
> работы грамотно написанного кода на java будет медленнее скорости работы грамотно
> написанного кода на С.я ошибся, то я про процедурное писал. по функциональному ничего сказать не могу.
>> а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированый
> потому что мне понравился этот подход, я использую и инкапсуляцию и полиморфизм
> и наследование. это ведёт к меньшему объёму кода, меньшему количеству ошибок
> в этом коде. бОльшая надёжность в работе программы.При этом ошибки в написанной Вами программе наследуются, инкапсулированы и полиморфны?
Ведь в этом отличие программ на С и С++, верно?
> а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированыйи хочу заметить что java можно использовать как ООП язык программирования и как процедурный и как клас-сориентрированный.
процедурный вариант используют те кто не вообще не понял что такое ООП. как класс ориентированный используют те кто думает что использует ооп, но классы у этих людей лишь как логические области в программе, а не как объекты инкапсулирующие код и данные. если вы программируете на java то вы подходите к последней категории.
>> а зачем Вам ООП? и давайте не путать обьектно-ориентированый подход и класс-ориентированый
> и хочу заметить что java можно использовать как ООП язык программирования и
> как процедурный и как клас-сориентрированный.
> процедурный вариант используют те кто не вообще не понял что такое ООП.
> как класс ориентированный используют те кто думает что использует ооп, но
> классы у этих людей лишь как логические области в программе, а
> не как объекты инкапсулирующие код и данные. если вы программируете на
> java то вы подходите к последней категории.умею я ООП, но основная масса кода которую видел была КОП. В данный момент перешал на питон так как его обьектная модель мне больше нравится
>[оверквотинг удален]
>> и хочу заметить что java можно использовать как ООП язык программирования и
>> как процедурный и как клас-сориентрированный.
>> процедурный вариант используют те кто не вообще не понял что такое ООП.
>> как класс ориентированный используют те кто думает что использует ооп, но
>> классы у этих людей лишь как логические области в программе, а
>> не как объекты инкапсулирующие код и данные. если вы программируете на
>> java то вы подходите к последней категории.
> умею я ООП, но основная масса кода которую видел была КОП. В
> данный момент перешал на питон так как его обьектная модель мне
> больше нравитсябудь так вы бы не задавали вопрос "зачем вам ООП"
я вижу Вы недавно в этой сфере? ООП не всегда к месту.
> я вижу Вы недавно в этой сфере?как можно было такое подумать вообще?! у него же Продающийся Продукт есть!
так я и не пхаю его куда ни попадя, тут рассуждения в рамках того где ООП к месту
например парсер логов
> java даёт возможность ООП реализации, у перла процедурный подход. я считаю ООП
> это преимущество.Perl умеет ООП. Даже некоторые ассемблеры умеют ООП. Другое дело, что вам нравится конкретная реализация ООП. Так это вкусовщина, а не реальная причина. С тем же успехом можно выдавать за преимущество {} вместо begin end и наоборот.
Конкретные.
В перле одного-единственного пути не бывает в том числе и для ОО.
あなたは馬鹿ですか?!
Же-е-е-е-сть. Для ЭТОГО нужна жава? Жава чтоб законнектиться к TAPI астериска, подключиться к экстеншену с ChanSpy, SQLем залезть в базу? o_O Да вы е@#$лись!.
нет, без жавы говноподелие впаривать сложнее.
> Ко-ко-ко! Пок-пок-пок!Прости, я тебя не понимаю.
> глупости, возможность без проблем запустить программу написанную пару десятков лет назад это преимущество языка которое используется во многих отраслях.Согласен, но к JAVA это отношение не имеет. Больше напоминает простые Сишные программки.
> Использовать штатный генератор _любого_ языка в криптографических целях будет только кретин.И, вообще-то, хотелось бы, чтобы языки, рантаймы и либы не подкладывали свинью.
>> Использовать штатный генератор _любого_ языка в криптографических целях будет только кретин.
> И, вообще-то, хотелось бы, чтобы языки, рантаймы и либы не подкладывали свинью.и не подкладывают. ты где-то в документации по js или libc видел указание, что их штатные PRNG подходят для применения в криптографии? не видел, потому что там такого нет. ну и всё, значит — не подходят.
а то, что ты не любишь читать, а сразу ломишься кодить… ну, это не проблемы авторов языков и рантаймов.
Попробуй на досуге прочитать пару килобайт из /dev/urandom, а потом повторить с /dev/random. Сравни скорость, обрати внимание на быстрое истощение /dev/random.Обдумай результаты и пойми, почему предлагаемое тобой является глупостью.
> Обдумай результаты и пойми, почему предлагаемое тобой является глупостью.где связь? ну, кроме того, что ты, кажется, считаешь, что для «надёжной криптографии» надо зачем-то использовать /dev/random а не /dev/urandom, что совершенная чушь.
>> Использовать штатный генератор _любого_ языка в криптографических целях будет только кретин.
> И, вообще-то, хотелось бы, чтобы языки, рантаймы и либы не подкладывали свинью.Подложенная "свинья" здесь такая же, как, например, ограниченность целых чисел в большинстве языков и потенциальная возможность переполнения. Уметь различать псевдослучайные генераторы, обязанные быть предсказуемыми по всей длине (предназначенные для математики) и генераторы (неважно, насколько случайность истинна), обязанные быть непредсказуемыми, и предназначенные для криптографии - это азы информатики. Не знающий этого не имеет достаточной компетенции, чтобы написать хоть один вызов ГПСЧ или завязанный на него алгоритм: он не догадается посмотреть, как помечен конкретный генератор.
еще это умели делать на программируемых микрокалькуляторах
> Зная одно уже сгенерированное значение можно предсказать дальнейшую последовательность значений
xkcd кидают в настолько предсказуемых местах, что можно даже не зная номера всегда угадать, какой это комикс. Вот этот - про число 4.
Java-класс SecureRandom существует в java 1.2, с 1998 года...
ппц новость минусую
>Исследователи безопасности обратили внимание на проблемы линейных генераторов псевдослучайных чисел, позволяющих легко предсказать последовательность значений, зная одну из сгенерированных последовательностей или подобрав начальный seed.Ппц вообще открытие... В следующем выпуске Опеннета: "Ученые обнаружили, что цианид вредит здоровью".
исследователям безопасности внезапно обнаружили проблемы с безопасностью в системе, изначально не предназначеной для обеспечения безопасности.приблизительно то же, что сушить кота в микроволновке, а потом кричать, что в инструкции не указано, что так нельзя делать