1.0.0 • Published 2 years ago

@safeheron/crypto-rand v1.0.0

Weekly downloads
-
License
-
Repository
github
Last release
2 years ago

crypto-rand-js

Installation

npm install @safeheron/crypto-rand

Import the library in code:

import {Rand, Prime} from "@safeheron/crypto-rand"

Config Your Random Function

If you don't set a custom function, the library will use the random function of built-in library of NodeJS default.

Rand.config_randomBytesImp(
    function (byteSize) {
        const crypto = require("crypto")
        return crypto.randomBytes(byteSize);
    }
);

Rand.config_randomPrimeImp(
    async function (byteSize: number): Promise<BN> {
        while (true) {
            let r = await Rand.randomBN(byteSize)
            if (Prime.isProbablyPrime(r)) {
                return r
            }
        }
    },
);

Rand.config_randomSafePrimeImp(
    async function (byteSize: number): Promise<BN> {
        throw "no implementation for randomSafePrime"
    },
);

Examples

  • Get a random array of "n" bytes.
let r = await randomBytes(n)
  • Get a random BN between 0 and 2^n(not included).
let r = await randomBytes(n)
  • Get a random BN between 2^(n-1) and 2^n(not included).
let r = await randomBNStrict(n)
  • Get a random prime between 0 and 2^n(not included).
let r = await randomPrime(n)
  • Get a random prime between 2^(n-1) and 2^n(not included).
let r = await randomPrimeStrict(n)
  • Get a random prime between 0 and 2^256(not included).
let r = await randomPrime256Bit(n)
  • Get a random prime between 2^255 and 2^256(not included).
let r = await randomPrimeStrict256Bit(n)
  • Get a random BN less than 'n'
let r = await randomBNLt(n)
  • (Deprecated)Get a random BN that is less than 'n' and is co-prime with 'n'.
let r = await randomBNLtGCD(n)
  • Get a random BN that is less than 'n' and is co-prime with 'n'.
let r = await randomBNLtCoPrime(n)