mehul-engineer/Bit-Based-Randomized-Entropy-System-Scheduler-Based-RNG

GitHub: mehul-engineer/Bit-Based-Randomized-Entropy-System-Scheduler-Based-RNG

一个实验性的 Java 随机数生成器,通过制造多线程并发竞争并利用 OS 线程调度器的不可预测时序作为熵源来生成非确定性随机数。

Stars: 1 | Forks: 0

# BBRES-RNG **基于比特的随机熵系统 — 基于调度器的 RNG** *一款实验性的 Java 随机数生成器,从 OS 线程调度的混沌中提取实时熵。* [![Java](https://img.shields.io/badge/Language-Java-orange?style=for-the-badge&logo=openjdk&logoColor=white)](#requirements) [![JDK 8+](https://img.shields.io/badge/JDK-8%2B-green?style=for-the-badge)](#requirements) [![参考](https://img.shields.io/badge/Research%20Reference-SYS--ENG%2F001-blue?style=for-the-badge)](https://qquantt.com/article.html?id=sys-eng%2F001)
## 概述 BBRES-RNG 是一个多线程随机数生成器,它刻意制造受控的并发,并将 OS 线程调度器不可预测的时序行为作为其熵源。它生成的每一个数字都受到宿主机实时的、非确定性状态的塑造,使得每次输出在实践中都是不可重复的。 这在几个方面打破了传统的 PRNG 设计:BBRES-RNG 不再依赖确定性公式、固定的数学种子和单线程执行,而是基于熵、本质上是非确定性的,并且建立在多线程并发架构之上。 本项目旨在用于研究、实验和教育学习。统计测试结果可以帮助评估给定样本的观测输出质量;但测试结果本身并不能证明其加密安全性、熵强度,或证明其适用于安全敏感型场景。 ## 架构 生成 pipeline 经历三个阶段: 1. **阶段 1 - 线程生成与受控竞争条件:** 同时启动多个工作线程(`randomBitGenRNG`)。OS 调度器决定它们的执行顺序,该顺序会根据 CPU 状态、系统负载和内核级调度产生微秒级的不可预测变化。 2. **阶段 2 - 基于时序的熵收集:** 每个工作线程竞相将其 ID 记录到一个共享的标志数组中。到达顺序成为原始的熵信号,而单独的 `AtomicIntegerArray` 在无需全局锁的情况下协调跨线程组的就绪状态。 3. **阶段 3 - 按位混合与聚合:** 来自最先和最后约 20% 完成者的到达顺序值通过 XOR 操作进行组合。这些值通过一个小型的 xorshift 风格混合步骤进行处理,每个周期产生一个随机比特。然后这些比特由 `RNG.java` 组装成任意范围的整数。 编排层(`randomBitGeneratorModifiedRoot.java`)将请求的并发划分为最多包含 32 个线程的块,上限最高为 64 个段。它公开了两种生成技术: * **G1(默认):** 按照线程的自然 ID 顺序进行分段。 * **G2:** 在分段之前,执行 Fisher-Yates 风格的线程 ID 洗牌(由嵌套的 BBRES-RNG v1 调用驱动),从而为调度竞争增加额外的不可预测性。 ## 项目结构 ``` src/ ├── Main.java (entry point and usage examples) └── bbresRNG/ ├── RNG.java (public API) ├── randomBitGeneratorModifiedRoot.java (core bit generator and thread orchestration, G1/G2) ├── modRandomBitGenRNG.java (worker-thread variant collecting timing data in parallel) └── randomBitGenRNG.java (base worker thread launched for entropy harvesting) docs/ (contains architecture documentation and full validation reports) LICENSE README.md ```
标签:JS文件枚举, 域名枚举, 多线程并发, 密码学研究, 熵收集, 系统调度, 随机数生成