Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jedisct1/aes-stream
A fast AES-PRF based secure random-number generator
https://github.com/jedisct1/aes-stream
aes aes-128 aes-256 csprng drbg prg random
Last synced: 3 months ago
JSON representation
A fast AES-PRF based secure random-number generator
- Host: GitHub
- URL: https://github.com/jedisct1/aes-stream
- Owner: jedisct1
- License: bsd-2-clause
- Created: 2017-10-28T23:34:17.000Z (about 7 years ago)
- Default Branch: master
- Last Pushed: 2023-07-15T18:57:54.000Z (over 1 year ago)
- Last Synced: 2024-10-05T04:35:46.192Z (3 months ago)
- Topics: aes, aes-128, aes-256, csprng, drbg, prg, random
- Language: C
- Homepage:
- Size: 18.6 KB
- Stars: 17
- Watchers: 4
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
AES-STREAM
==========A simple, but fast AES-PRF-based random number generator.
Fast, designed to fill large buffers with random data.
Does fast key erasure.Requires a modern Intel or AMD CPU with AES-NI support.
API
===Pretty straightforward:
```c
#include "aes-stream.h"#define AES_STREAM_SEEDBYTES 32
void aes_stream_init(aes_stream_state *st, const unsigned char seed[AES_STREAM_SEEDBYTES]);
void aes_stream(aes_stream_state *st, unsigned char *buf, size_t buf_len);
```Call `aes_stream_init()` with a seed, then `aes_stream()` to fill
`buf` with `buf_len` random bytes.`aes_stream()` can be called indefinitely without having to reseed the
generator.Compilation
===========Do not forget to tell your compiler to enable support for AES opcodes
with the `-maes` flag.Recommended: `-Ofast -maes -march=native`
Clang 7 appears to produce faster code than gcc 8.
Key erasure is performed after every call to `stream()`. If you are
dealing with many short keys, implement a pool on top of this.Uses AES-128 by default. Define `AES_STREAM_ROUNDS=14` in order to use
AES-256 instead.References
==========* [Cryptanalysis of AES-PRF and its Dual](https://tosc.iacr.org/index.php/ToSC/article/view/892/843)
(Patrick Derbez, Tetsu Iwata, Ling Sun, Siwei Sun, Yosuke Todo, Haoyang Wang and Meiqin Wang)
* [Optimal PRFs from blockcipher designs](https://eprint.iacr.org/2017/812.pdf)
(Bart Mennink and Samuel Neves)
* [Fast-key-erasure random-number generators](https://blog.cr.yp.to/20170723-random.html)
(Daniel J. Bernstein)