taranovegor/string-generator

Fast, cryptographically-secure random string generator with predefined ASCII alphabets

Maintainers

Package info

github.com/taranovegor/string-generator

pkg:composer/taranovegor/string-generator

Transparency log

Statistics

Installs: 3

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.0 2026-07-07 11:27 UTC

This package is auto-updated.

Last update: 2026-07-07 11:32:05 UTC


README

CI PHPStan Level 9 PHP 8.2+ License: MIT

Fast, cryptographically-secure random string generator for PHP 8.2+.

Zero external dependencies. Uses random_bytes() with bit-packing and rejection sampling for efficient, unbiased output.

Installation

composer require taranovegor/string-generator

Quick start

use TaranovEgor\StringGenerator\Alphabet;
use TaranovEgor\StringGenerator\StringGenerator;

$generator = new StringGenerator();

// Default — alphanumeric (a-zA-Z0-9)
$token = $generator->generate(32);

// Digits only
$pin = $generator->generate(6, Alphabet::Digits);

// Letters only
$code = $generator->generate(16, Alphabet::Alpha);

// All printable ASCII
$password = $generator->generate(20, Alphabet::Printable);

All predefined alphabets

Case Characters Size
Digits 0-9 10
AlphaLower a-z 26
AlphaUpper A-Z 26
Alpha a-z A-Z 52
Alphanumeric a-z A-Z 0-9 62
Punctuation 32 punctuation characters (`!"#$%&'()*+,-./:;<=>?@[]^_{ }~`)
Printable All printable ASCII (33–126) 94

Custom alphabet

Pass a string as the second argument — every byte in it becomes a valid character:

$generator = new StringGenerator();

// Hex string
echo $generator->generate(32, '0123456789abcdef');

// Base58
echo $generator->generate(22, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');

// Binary-safe — works with any byte values, including null bytes
echo $generator->generate(64, "\x00\x01\x02\x03");

Note: the alphabet must contain at least 2 distinct bytes.

Development

composer install

# Run tests
composer test

# Static analysis (PHPStan level 9)
composer analyse

License

The scripts and documentation in this project are released under the MIT License