Генератор случайных чисел, совместимый с FIPS 140-2 — Java

Мне нужно написать генератор случайных чисел, который использует алгоритм, совместимый/сертифицированный FIPS 140-2. Мне трудно найти что-то, что будет работать для меня. Кто-нибудь делал это раньше? Я не хочу платить ни за что, чтобы сделать это.

Использование Java 8. Среда разработки — Mac OSX, серверы — CentOs 7.

ОБНОВИТЬ:

Код выглядит так на сегодняшний день.

import java.security.SecureRandom;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import java.util.stream.LongStream;

public class LongRandom {
public LongRandom(){}
private Long minLong = new Long("1000000000000000000");

public List<Long> getRandomLongList(int numberOfRandom){
final SecureRandom random = new SecureRandom();
LongStream longs = random.longs(numberOfRandom, minLong, Long.MAX_VALUE).distinct();
long[] arrayLong = longs.toArray();
List<Long> list = Arrays.stream(arrayLong).boxed().collect(Collectors.toList());

return list;
}

public Long getRandomLongWinner(List<Long> potentialWinners){
final SecureRandom random = new SecureRandom();
Collections.shuffle(potentialWinners,random);
IntStream ints = random.ints(1,0,(potentialWinners.size() - 1));

return potentialWinners.get(ints.findFirst().getAsInt());
}

}


person Adrian E    schedule 02.03.2017    source источник
comment
Где ты заблокирован? Что вы сейчас написали? (пожалуйста, опубликуйте свой код, чтобы мы могли предоставить точную помощь)   -  person Adonis    schedule 03.03.2017
comment
Алгоритм может быть FIPS-совместимым, реализация может быть сертифицирована FIPS (что означает, что она проходит все тестовые векторы, выполняет тесты при запуске и т. д.).   -  person Maarten Bodewes    schedule 03.03.2017
comment
Вы читали Javadoc для SecureRandom?   -  person chrylis -cautiouslyoptimistic-    schedule 03.03.2017
comment
У меня есть что-то подобное до сих пор ... Я просто не уверен, что это достаточно случайно. Я прочитал SecureRandom Javadocs, в котором говорится, что он минимально соответствует FIPS 140-2.   -  person Adrian E    schedule 07.03.2017
comment
В Java Docs сказано, что он минимально соответствует, но я не вижу его в базе данных проверки NIST, поэтому, на мой взгляд, если вам нужен модуль FIPS 140-2, это не подойдет. Может быть, он прошел проверку, а база данных NIST, так сказать, слишком загадочна, чтобы я мог ее правильно интерпретировать?   -  person Matt Shirilla    schedule 07.12.2019


Ответы (1)


Вот официальный список адекватных ГСЧ. BSAFE широко используется.

http://csrc.nist.gov/groups/STM/cavp/documents/rng/rngval.html

person Charlie Martin    schedule 02.03.2017
comment
BSAFE была широко использована для генераторов случайных чисел до фиаско Dual EC DRBG. У других провайдеров был такой же PRNG, но, насколько я знаю, только BSAFE сделал его своим по умолчанию. - person Maarten Bodewes; 03.03.2017