какое значение должно быть выбрано для определенности, чтобы получить 512-битное простое число, используя класс BigInteger в Java? - PullRequest
0 голосов
/ 11 марта 2012

Конструктор BigInteger в Java:

public BigInteger(int bitLength,
                  int certainty,
                  Random rnd)

Создает случайно сгенерированный положительный BigInteger, который, вероятно, является простым, с указанным bitLength. Рекомендуется использовать метод probablePrime вместо этого конструктора, если нет необходимости указывать определенность.

Параметры:

bitLength - bitLength of the returned BigInteger.
certainty - a measure of the uncertainty that the caller is willing to tolerate. The probability that the new BigInteger represents a prime number will exceed (1 - 1/2certainty). The execution time of this constructor is proportional to the value of this parameter.
rnd - source of random bits used to select candidates to be tested for primality. 

Означает ли это, что чем выше значение для достоверности, тем больше вероятность получить простое число? В этом случае какое значение следует выбрать для уверенности, чтобы получить 512-битное простое число?

Ответы [ 2 ]

2 голосов
/ 11 марта 2012

Означает ли это, что чем выше значение для достоверности, тем больше вероятность получить простое число?

Да.

В этом случае какое значение следует выбрать для уверенности, чтобы получить 512-битное простое число?

Javadoc отвечает на это:

certainty - мера неопределенности, которую звонящий готов терпеть. Вероятность того, что новый BigInteger представляет простое число, будет превышать (1 - 1 / (2 достоверность )).

Чем больше вы сделаете certainty, тем меньше вероятность того, что число не простое. Вам решать, какая вероятность непростого числа приемлема для вас.

0 голосов
/ 13 марта 2012

Компьютеры - это машины, которые могут выйти из строя.Если выбранная вами вероятность меньше вероятности сбоя вашего компьютера, вы не сможете добиться большего успеха.

Для криптографических целей 128 или 256 будут достаточно большими.Больше, чем это было бы излишним.Имейте в виду, что на самом деле вероятность ошибки намного меньше;вероятность зависит от количества итераций теста Миллера-Рабина , которые выполняются внутри компании.(1 - 1 / (2 ^ уверенность)) является теоретической оценкой.Фактическая граница лучше, чем эта.

Вам также следует использовать SecureRandom, поскольку энтропии на равнине Random недостаточно, чтобы получить хорошее распределение больших простых чисел.Некоторые проблемы недавно были выявлены в некоторых реализациях RSA из-за слабого ввода ГСЧ в генераторы простых чисел.

...