1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Trisia-randomness

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Методы проверки случайности двоичных последовательностей

Документация GitHub go.mod Go version GitHub tag (latest SemVer)

Перед использованием randomness обязательно ознакомьтесь с «randomness 免责声明»!

  • Спасибо проекту zhebinhu/randomnessTests.
  • Благодарю Sun Yimin за ключевой вклад в этот проект.

Обзор проекта

Этот набор инструментов реализует 15 методов проверки случайности, описанных в стандарте «GM/T 0005-2021 Проверка случайности» .

rundesp.png

Инструменты для проверки

Если вам нужно использовать связанные инструменты тестирования, вы можете скачать скомпилированную версию из Release или скомпилировать программу вручную, см. документацию:

Быстрый старт

Инструмент для проверки rddetector — это только один из способов использования randomness, который предоставляет богатый API-интерфейс для настройки под ваши нужды.

Установите randomness:

go get -u github.com/Trisia/randomness

Вот пример проверки покера для последовательности из 1 000 000 бит:

package main

import (
	"crypto/rand"
	"fmt"
	"github.com/Trisia/randomness"
)

func main() {
	// Генерируем случайную последовательность
	n := 1000_000
	buf := make([]byte, n/8)
	_, _ = rand.Read(buf)
	// Преобразуем в массив битов
	bits := randomness.B2bitArr(buf)

	// Запускаем проверку
	p, _ := randomness.PokerTest(bits)
	fmt.Printf("Покерная проверка n: 1000000, P-value: %f\n", p)
}

Дополнительные примеры использования API см.: документация randomness API.

Проверка генераторов случайных чисел

randomness реализует стандарт GM/T 0062-2018 «Требования к проверке случайных чисел криптопродуктов» для четырёх этапов проверки генераторов случайных чисел:

См. примеры использования в тестовом примере detect_test.go.

Если ваш процессор имеет несколько ядер, вы можете использовать API серии Fast для ускорения проверки, см. тестовый пример detect_fast_test.go.

Обратите внимание: для дискретного преобразования Фурье требуется более 1024 МБ памяти для однократной проверки 10^8 бит данных, чтобы избежать переполнения памяти (OOM), если на вашем компьютере несколько процессоров.

Развитие

Стандарты проверки:

В стандарте GM/T 0005-2021 «Проверка случайности» на основе критерия прохождения выборки добавлен критерий равномерности выборки в качестве критерия прохождения проверки, см. GM/T 0005-2021 «Проверка случайности» 6.3.

На данный момент randomness уже обновлен до стандарта GM/T 0005-2021 «Проверка случайности».

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления (5)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Trisia-randomness.git
git@api.gitlife.ru:oschina-mirror/Trisia-randomness.git
oschina-mirror
Trisia-randomness
Trisia-randomness
master