Я не уверен, есть ли библиотека, которая может соответствовать вашей цели. Я могу дать вам несколько советов по реализации:
Основой вашей реализации будет LFSR. Вы можете реализовать один из двух способов:
- Реализация Фибоначчи состоит из простого сдвигового регистра, в котором сумма двоичных взвешенных отводов по модулю 2 подается обратно на вход (помните, что сумма mod-2 эквивалентна сложению без переноса, что, в свою очередь, эквивалентно с XOR).
- Реализация Galois состоит из сдвигового регистра, содержимое которого на каждом шаге модифицируется двоичным взвешенным значением выходного каскада, опять же с использованием математики по модулю 2. Порядок весов Галуа противоположен порядку весов Фибоначчи. Форма Галуа, как правило, быстрее из-за уменьшенного количества логики в цикле обратной связи.
Для получения дополнительной информации о том, как указаны отводы и какие последовательности вы можете получить, вы можете начать здесь . Обратите внимание, что ваши варианты реализации, описанные выше, могут иметь одинаковую длину цикла и последовательность выходных битов для соответствующего выбора начальных состояний (начальных значений).
Это ваше основное требование прямо здесь. LFSR имеют выходные потоки, которые очень равномерно распределены и имеют достаточно длительные периоды. Я бы посоветовал не использовать его в криптографических целях, поскольку он чрезвычайно слаб - будучи линейной системой. Есть обходные пути, но ничего существенного, кроме усадочного генератора (который я нахожу чрезвычайно интересным).
Ссылки на реализации уже даны, так что удачи!