semperton/multibase

Base transcoder with multibyte character alphabet support.

2.1.0 2022-11-11 14:43 UTC

This package is auto-updated.

Last update: 2024-12-11 19:30:52 UTC


README

Semperton

Semperton Multibase

Base transcoder with multibyte character alphabet support.

Installation

Just use Composer:

composer require semperton/multibase

Multibase requires PHP 7.4+ and the mbstring extension

Tip: Install the GMP extension for faster base conversion up to base 62

Package

Included base transcoders:

  • Base58
  • Base62
  • Base85 RFC 1924

Usage

Multibase transcoders are able to convert any arbitrary data. Use them as URL / MD5 shorteners, password generators, Base64 alternatives...

use Semperton\Multibase\Base62;
use Semperton\Multibase\Base85;

// basic usage
$base62 = new Base62();
$base62->encode('Hello World'); // 73XpUgyMwkGr29M
$base62->decode('73XpUgyMwkGr29M'); // Hello World

// shorten md5 hash
$hash = md5('Hello World'); // b10a8db164e0754105b7a99be72e3fe5

$short = $base62->encode(hex2bin($hash)); // 5O4SoozqXEOwlYtvkC5zkr
$short = $base62->encode(md5('Hello World', true)); // same as above

$decoded = $base62->decode($short);
$hash === bin2hex($decoded); // true

// password generation
$bytes = openssl_random_pseudo_bytes(16);
$password = (new Base85())->encode($bytes); // e.g. Ncg>RWSYO+2t@~G8PO0J

Custom transcoders

You can create custom transcoders with your own alphabets (multibyte support). Just for fun, how about an emoji transcoder?

use Semperton\Multibase\Transcoder\BaseTranscoder;

$emojiTranscoder = new BaseTranscoder(
	'πŸ§³πŸŒ‚β˜‚οΈπŸ§΅πŸͺ‘πŸͺ’πŸ§ΆπŸ‘“πŸ•ΆπŸ₯½πŸ₯ΌπŸ¦ΊπŸ‘”πŸ‘•πŸ‘–πŸ§£πŸ§€πŸ§₯πŸ§¦πŸ‘—πŸ‘˜πŸ₯»πŸ©΄πŸ©±πŸ©²' .
	'πŸ©³πŸ‘™πŸ‘šπŸ‘›πŸ‘œπŸ‘πŸŽ’πŸ‘žπŸ‘ŸπŸ₯ΎπŸ₯ΏπŸ‘ πŸ‘‘πŸ©°πŸ‘’πŸ‘‘πŸ‘’πŸŽ©πŸŽ“πŸ§’β›‘πŸͺ–πŸ’„πŸ’πŸ’Ό'
);

$encoded = $emojiTranscoder->encode('Hello World'); // β˜‚πŸͺ’πŸ‘ŸπŸ©΄πŸ©°πŸ₯»πŸ‘šπŸ‘™πŸ§’🩲πŸ§₯πŸ₯½πŸŽ©πŸ‘™πŸ‘πŸŽ’
$emojiTranscoder->decode($encoded); // Hello World