https://github.com/tim-janik/scl
Small C/C++ Bits
https://github.com/tim-janik/scl
chacha chacha8 csprng entropy keccak mwc prng public-domain rdrand shishua spline
Last synced: over 1 year ago
JSON representation
Small C/C++ Bits
- Host: GitHub
- URL: https://github.com/tim-janik/scl
- Owner: tim-janik
- License: mpl-2.0
- Created: 2023-10-24T12:09:37.000Z (over 2 years ago)
- Default Branch: trunk
- Last Pushed: 2023-12-24T12:47:12.000Z (over 2 years ago)
- Last Synced: 2025-02-06T22:14:11.083Z (over 1 year ago)
- Topics: chacha, chacha8, csprng, entropy, keccak, mwc, prng, public-domain, rdrand, shishua, spline
- Language: C
- Homepage:
- Size: 273 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# SCL
The Small/simple C/C++ Library (SCL) provides various algorithms in a portable way, with little to no external dependencies.
The library is written in C++17 and uses the [MPL-2.0 License](http://mozilla.org/MPL/2.0) or [Public Domain](https://unlicense.org/) dedications.
The subdirectories are structured as follows:
* `mwc256/` contains a Public Domain 256 bit Multiply-With-Carry PRNG implementation for generic CPUs (ALU).
With just a multiplication and add per round, this PRNG is as simple as it can get. On 64 bit machines it
is probably the fastest single-data PRNG implementation, it passes PractRand at 32TB.
* `shishua/` contains a Public Domain Shishua PRNG implementation for generic CPUs (ALU), the SSE2/3 and AVX2 instruction set variants.
This is currently the fastest known PRNG implementation, it passes PractRand at 32TB.
* `chacha/` contains a Public Domain ChaCha block cipher implementation for generic CPUs (ALU), the SSE2/3 and AVX2 instruction set variants.
This is probably the fastest CSPRNG implementation, it passes PractRand at 32TB.
* `keccak/` contains a Public Domain Keccak PRNG implementation for generic CPUs (ALU) and system entropy gathering code according to the
"Welcome to the Entropics: Boot-Time Entropy in Embedded Devices" paper.
Using Keccak allows for a 1600 bit CSPRNG entropy pool, it passes PractRand at 32TB.
* `spline/` contains a Public Domain cubic spline interpolation implementation, which can be used to create an approximation of a function
given a number of knots (control points) with third-order polynomial segments connecting each pair of data points.