shake128generator function

Iterable<int> shake128generator([
  1. List<int>? seed
])

Creates a SHAKE-128 based infinite hash generator.

If seed is provided it will be used as an input to the algorithm. With a proper seed, this can work as a random number generator.

Example:

final hash = shake128generator().take(500).toList();

Warning: This is an infinite Iterable. Do not call toList directly!

Implementation

Iterable<int> shake128generator([List<int>? seed]) sync* {
  int i;
  final sink = Shake128Hash(0);
  if (seed != null && seed.isNotEmpty) {
    sink.$process(seed, 0, seed.length);
  }
  sink.$finalize();
  while (true) {
    for (i = 0; i < sink.blockLength; ++i) {
      yield sink.buffer[i];
    }
    sink.$update();
  }
}