stephenhill / base58
PHP的Base58编码和解码库
v1.1.5
2019-08-22 16:51 UTC
Requires (Dev)
- athletic/athletic: ~0.1
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 16:39:45 UTC
README
长期支持
本库的每个主要版本在首次发布后都将获得5年的支持。支持将包括安全性和错误修复。
版本1的支持将一直持续到2019年9月11日。
背景
我想找一个替代Base64编码字符串的库,比特币使用的Base58编码看起来很理想。我在网上寻找现有的PHP库,可以直接将字符串转换为Base58,但找不到,或者至少找不到一个正确工作并且经过良好测试的库。
因此,我决定创建一个具有以下目标的库
- 编码/解码PHP字符串
- 简单易用
- 完全测试
- 通过Composer可用
要求
本库有以下要求
- PHP => 5.3
- BC Math扩展
安装
我建议您通过Composer安装此库。
{ "require": { "stephenhill/base58": "~1.0" } }
基本用法
require_once('vendor/autoload.php'); $base58 = new StephenHill\Base58(); $base58->encode('Hello World'); $base58->decode('JxF12TrwUP45BMd');
高级用法
默认情况下,此库选择要使用的编码服务提供商,要么是GMPService,要么是BCMathService(按此顺序)。如果您想指定其中一个服务或您自己的服务,可以在构造函数中注入它。
require_once('vendor/autoload.php'); $gmp = new StephenHill\GMPService(); $base58 = new StephenHill\Base58(null, $gmp); $base58->encode('Hello World'); $base58->decode('JxF12TrwUP45BMd');
默认情况下,此库使用比特币的Base58字母表。如果您想使用其他变体,可以在构造函数中完成此操作。
require_once('vendor/autoload.php'); // Flickr's Base58 Alphabet $base58 = new StephenHill\Base58('123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'); $base58->encode('Hello World'); $base58->decode('iXf12sRWto45bmC');
测试
此库使用PHPUnit进行测试。
$ bin/phpunit
基准测试
您可以使用Athletic来基准测试此库。基准测试套件还比较了PHP内置的Base64和Base16编码。
$ bin/athletic -p benchmarks
示例输出。
StephenHill\Benchmarks\Base16Event
Method Name Iterations Average Time Ops/second
------------ ------------ -------------- -------------
encodeBase16: [10,000 ] [0.0000010839939] [922,514.40637]
decodeBase16: [10,000 ] [0.0000011516809] [868,296.03561]
StephenHill\Benchmarks\Base58BCMathEvent
Method Name Iterations Average Time Ops/second
------------ ------------ -------------- -------------
encodeBase58: [10,000 ] [0.0001500048161] [6,666.45263]
decodeBase58: [10,000 ] [0.0001741812706] [5,741.14540]
StephenHill\Benchmarks\Base58GMPEvent
Method Name Iterations Average Time Ops/second
------------ ------------ -------------- -------------
encodeBase58: [10,000 ] [0.0001168665648] [8,556.76730]
decodeBase58: [10,000 ] [0.0001385705233] [7,216.54199]
StephenHill\Benchmarks\Base64Event
Method Name Iterations Average Time Ops/second
------------ ------------ -------------- -------------
encodeBase64: [10,000 ] [0.0000009050369] [1,104,927.29189]
decodeBase64: [10,000 ] [0.0000009787321] [1,021,730.04312]
贡献
我欢迎每个人为此库做出贡献。请参阅贡献文档以获取详细信息。
许可
此库受MIT许可(MIT)的许可。请参阅许可文件以获取更多信息。
致谢
此库是从Jeremy Johnstone的 Gist上的Base58方法https://gist.github.com/jsjohnst/126883分叉的。
一些单元测试基于以下内容