bafs / crc-php
v0.2.0
2022-04-03 14:45 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.5
- vimeo/psalm: ^4.22
README
PHP 8.0+ 中循环冗余校验 (CRC) 的灵活实现。
安装
composer require bafs/crc-php
使用方法
基本使用
使用 CRC24/OPENPGP 的示例
$encoder = CrcFactory::create(CrcFactory::CRC24_OPENPGP); echo dechex($encoder->compute('test')); // f86ed0
推荐使用(使用缓存)
建议使用缓存来加速计算(大约10倍,具体取决于输入和使用的CRC,更多详情请见examples/benchmark.php
)。
您可以使用Encoder::generateTable()
生成表格。
$encoder = CrcFactory::create(CrcFactory::CRC24_OPENPGP); print_r($encoder->generateTable()); // [0x0, 0x864cfb, 0x8ad50d, 0xc99f6, 0x93e6e1, 0x15aa1a, ...]
您可以在examples/generate-table.php
中看到一个输出更友好的示例。
您应该在应用程序的引导阶段和/或服务容器中设置此表格。
// Bootstrap $table = [0x0, 0x864cfb, 0x8ad50d, 0xc99f6, 0x93e6e1, 0x15aa1a, 0x1933ec, 0x9f7f17, 0xa18139, ...]; $encoder = CrcFactory::create(CrcFactory::CRC24_OPENPGP, $table); // Encoder will use the table to compute the hash echo dechex($encoder->compute('test')); // f86ed0
使用自定义参数的高级使用
可以向编码器提供自定义参数以获取任何CRC。
$encoder = CrcFactory::create(new Parameters(width: 8, poly: 0x07, init: 0x00)); echo dechex($encoder->compute('test')); // b9
您也可以从字符串创建参数。
$encoder = CrcFactory::create(Parameters::createFromString('width=8 poly=0x07 init=0x00 refin=false refout=false xorout=0x00 check=0xf4 residue=0x00 name="CRC-8/SMBUS"')); echo dechex($encoder->compute('test')); // b9
测试
- 单元测试:
./vendor/bin/phpunit --testdox --color tests
- 代码质量:
./vendor/bin/psalm