Skip to content

Repository files navigation

Entropy generator

An entropy generator based on first durstenfeld variant of fisher-yates.

Versions

This is the main branch.

Latest packages can be find on npm or releases.

Latest public package source code can be found here: main

branch status

Install

npm i @mintlayer/entropy-generator

Environment support

Requires Node.js 20+ or an environment providing crypto.getRandomValues. In browsers, use a bundler — the buffer dependency is resolved automatically.

Note on output quality: the input array shapes the shuffle, but every output byte is XORed with cryptographically secure random bytes, so the result is uniformly random regardless of the input.

Usage

generateEntropy

Call the function generateEntropy with a normalized array of integers as parameter. The second parameter(optional) is the size of the output. If set, it has to be a non-negative integer, smaller or the same size as the input. A Buffer object will be returned.

By "normalized" it means all values should be between 0-255. You can normalize you array by yourself or the normalizer function exported also by this library.

Example 1:

import { generateEntropy } from '@mintlayer/entropy-generator'

const initialArray = [ 1, 170, 55, 80, 190 ]
const entropy = generateEntropy(initialArray)
// entropy size: 5

Example 2:

import { generateEntropy } from '@mintlayer/entropy-generator'

const initialArray = [ 1, 170, 55, 80, 190 ]
const entropy = generateEntropy(initialArray, 3)
// entropy size: 3

normalize

Call the function normalize an array of integers as parameter. Another array will be returned with all values between 0-255.

Example:

import { normalize } from '@mintlayer/entropy-generator'

const initialArray = [-2000, -15000, 300, 400, 1500]
normalize(initialArray)
// returns: [ 201, 0, 236, 238, 255 ]

Development

Install deps

npm i

Build

npm run build

Run tests

Run once

npm test

Watch

npm run test:watch

Coverage

npm run test:coverage

Lint

npm run lint

How to Contribute

Check here to see what you should do, and the rules you should follow, to contribute to this project.

About

An entropy generator based on first durstenfeld variant of fisher-yates.

Topics

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages