Я ожидаю, что это связано с гарантиями.Гарантия /dev/urandom
заключается в том, что он будет использовать случайные данные, если они доступны, и заполнять псевдослучайными данными, если необходимо, чтобы избежать блокировки.Поэтому, если вы используете /dev/urandom
, вы не можете претендовать на истинную случайность, даже если иногда вы ее получаете.
В документации для SecureRandom
написано:
Многие реализации SecureRandom
представлены в форме генератора псевдослучайных чисел (PRNG), что означает, что они используют детерминированный алгоритм для создания псевдослучайной последовательности из истинного случайного начального числа.Другие реализации могут создавать истинные случайные числа, а другие могут использовать комбинацию обоих методов.
Таким образом, гарантией SecureRandom
может быть только то, что она работает псевдослучайно, если какие-либо реализацииразрешено делать это.Это может быть лучше, но это не контракт.