2 releases

Uses new Rust 2024

new 0.1.1 Mar 11, 2025
0.1.0 Mar 10, 2025

#285 in Command line utilities

49 downloads per month

Apache-2.0 OR MIT

34KB
551 lines

randgen

CI Version MSRV License

randgen is a tool which generates random bytes using a pseudorandom number generator (PRNG).

Installation

From source

cargo install randgen

From binaries

The release page contains pre-built binaries for Linux, macOS and Windows.

How to build

Please see BUILD.adoc.

Usage

Basic usage

Generate 1 KiB of random bytes:

randgen 1KiB

Output formats

The following output formats are available:

  • raw (encode the generated bytes as raw bytes)
  • base64 (encode the generated bytes as base64)
  • base64url (encode the generated bytes as URL-safe base64)
  • hex (encode the generated bytes as hex string)

The default output format is raw. To change this, use -f option.

randgen -f base64 256

Supported PRNGs and CSPRNGs

Supported PRNGs are:

  • ISAAC RNGs (if enabled at compile time)
  • Mersenne Twister RNGs (if enabled at compile time)
  • PCG RNGs (if enabled at compile time)
  • SFC RNGs (if enabled at compile time)
  • Xorshift family
    • SplitMix64 RNG
    • Xorshift RNG (if enabled at compile time)
    • xoroshiro RNGs
    • xoshiro RNGs

Supported CSPRNGs are:

  • ChaCha-based RNGs
  • HC-128-based RNG (if enabled at compile time)

The default RNG is chacha12. To change this, use -r option.

randgen -r pcg64 "2 MB"

Providing a random seed

-s option allows you to specify a 64-bit unsigned integer random seed to be used when creating a new PRNG. If this option is not specified, the RNG seeded via random data from system sources such as the getrandom system call on Linux.

$ randgen -f hex -r sfc32 -s 8 32B
24f48cd0c3f6a1c6e8d7b4dcff9578864aced749e4eb1805dfba8b6e21d0cba0

Generate shell completion

--generate-completion option generates shell completions to standard output.

The following shells are supported:

  • bash
  • elvish
  • fish
  • nushell
  • powershell
  • zsh

Example:

randgen --generate-completion bash > randgen.bash

Command-line options

Please see the following:

Source code

The upstream repository is available at https://github.com/sorairolake/randgen.git.

Changelog

Please see CHANGELOG.adoc.

Contributing

Please see CONTRIBUTING.adoc.

License

Copyright (C) 2025 Shun Sakai (see AUTHORS.adoc)

  1. This program is distributed under the terms of either the Apache License 2.0 or the MIT License.
  2. Some files are distributed under the terms of the Creative Commons Attribution 4.0 International Public License.

This project is compliant with version 3.2 of the REUSE Specification. See copyright notices of individual files for more details on copyright and licensing information.

Dependencies

~5–14MB
~192K SLoC