Unicorn with delicious cookie
Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
>
>
>
V6109. Potentially predictable seed...
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V6109. Potentially predictable seed is used in pseudo-random number generator.

23 Янв 2024

Данное диагностическое правило выявляет случаи использования псевдорандомного генератора случайных чисел, которые могут привести к недостаточно случайному распределению или предсказуемости генерируемого числа.

Случай 1.

Создание нового объекта типа 'Random' каждый раз, когда требуется случайное значение. Это неэффективно и может привести к получению чисел, которые не являются достаточно случайными, в зависимости от JDK.

Рассмотрим пример:

public void test() {
  Random rnd = new Random();
}

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

static Random rnd = new Random();

public void test() {
  int i = rnd.nextInt();
}

Случай 2.

Анализатор обнаружил подозрительный код, инициализирующий генератор псевдослучайных чисел константным значением.

public void test() {
  Random rnd = new Random(4040);
}

Числа, сгенерированные таким генератором, можно предугадать — они будут воспроизводиться снова и снова при каждом запуске программы. Чтобы этого избежать, не стоит использовать константное число. К примеру, можно воспользоваться текущим системным временем:


static Random rnd = new Random(System.currentTimeMillis());

public void test() {
  int i = rnd.nextInt();
}

Выявляемые диагностикой ошибки классифицируются согласно ГОСТ Р 71207–2024 как критические и относятся к типу: Ошибки некорректного использования системных процедур и интерфейсов, связанных с обеспечением информационной безопасности (шифрования, разграничения доступа и пр.).

Данная диагностика классифицируется как: