Генерация безопасного простого числа

Необходимо написать систему Дифии Хелмана. Для ее написания нужно сгенерировать безопасное простое число вида P = 2Q + 1, где Q число Софи Жермен. Как можно сгенерировать такое безопасное простое число с типом данных BigInteger?


Ответы (1 шт):

Автор решения: Анжелика

Могу предложить 2 решения, один из которых можно использовать на первое время (пока не предложат менее ресурсозатратное решение):

1)Сделать цикл. Например:

BigInteger bInt = 2;
for(int i = 0; int <= (int) (Math.random() * 1000); i++){
    bInt = 2 * bInt + 1;
}

Минус - цикл может занять много времени

2)Хранить где-нибудь список чисел Софи Жермен и в коде получать рандомный элемент из этого списка. Если список в отдельном файле, то не надо получать из него весь список, достаточно получить случайную строку/ячейку/др.

→ Ссылка