bafs/crc-php

v0.2.0 2022-04-03 14:45 UTC

This package is auto-updated.

Last update: 2024-09-14 14:57:22 UTC


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