Почему иногда Random работает корректно, то есть выдает разные значения при каждом запуске, как то раз запускал psvm подряд много раз он выдавал одно и тоже значение, в другой раз запускаю так же в psvm он работал нормально. Бывает так же еще что Random вызывал в рантайме около ста раз и выдавал одно и тоже значение. 1. Понимаю что это псевдогенерация, но почему иногда оправдывает свое название и иногда не подводит? Что значит псевдогенерация? Чем secureRandom лучше.
Обычный Random
генерирует псевдослучайную последовательность заранее детерменированную.
То есть если задать определённый seed
то Random(seed)
, будет выдавать одинаковые последовательности.
При использовании new Random()
он создаёт seed
на основе текущего времени, если подряд создать несколько new Random()
то с большой вероятностью seed
окажется одинаковым и последовательности будут повторяться. Тут тоже можно почитать - ГСЧ генерирует одинаковые последовательности , ответ для C# но для Java он тоже работает.
С помощью такой последовательности нельзя генерировать например пароли или сертификаты безопасности. Зная первые числа и алгоритм функции Random можно пробовать восстановить всю последовательность.
Как раз для таких ситуаций и придуман криптографический SecureRandom
. Он даёт следующие числа не просто в зависимости от предыдущих, а использует сложно предсказуемые величины для генерации числа, например информацию о температуре процессора, вольтаж, и другие параметры которые нельзя предсказать.
Так же SecureRandom
работает существенно медленнее обычного Random
.
Random - генератор псевдослучайных чисел. Вырезка из документации: https://docs.oracle.com/javase/8/docs/api/java/util/Random.html
An instance of this class is used to generate a stream of pseudorandom numbers. The class uses a 48-bit seed, which is modified using a linear congruential formula. (See Donald Knuth, The Art of Computer Programming, Volume 2, Section 3.2.1.) If two instances of Random are created with the same seed, and the same sequence of method calls is made for each, they will generate and return identical sequences of numbers.
Это значит, что он гарантирует определённое распределение сгенерированных чисел, позволяет генерировать их быстро, но на самом деле случайными эти числа не являются. Сгенерированная последовательность зависит от инициализирующего значения (seed), если использовать один и тот же seed, то и последовательность будет одинаковая. SecureRandom гарантирует, что последовательность будет криптостойкой, но это может снизить скорость генерации. Подробнее о псевдослучайных генераторах можно почитать в методическом пособии, глава 6.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть сайт ссылка для этого сайта как model создать ?
Имеется 2 источника данных: БД и серверПри старте приложения вызывается следующий метод репозитория (MyRepository):
Есть простой текст в div-блокеКак при выделении фрагмента этого текста обернуть его в тэг ? Или как сделать то же самое, но при клике на кнопку,...
Всем привет! Решил запретить контекстное меню браузеров на сайте использовал