pburggraf / crc
循环冗余校验器(crc)类,用于计算 crc8、crc16、crc24 和 crc32 校验和值
Requires
- php: >=8.1
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.0
- phpstan/phpstan: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- phpunit/phpunit: ^9.5
README
这是 PHP 7.x 中 CRC RevEng 目录的实现
如何使用
<?php // Autoloading via Composer require __DIR__ . '/vendor/autoload.php'; $crc8 = new \PBurggraf\CRC\CRC8\CRC8(); var_dump(dechex($crc8->calculate('123456789'))); // string(2) "f4" $crc16AugCcitt = new \PBurggraf\CRC\CRC16\AugCcitt(); var_dump(dechex($crc16AugCcitt->calculate('123456789'))); // string(4) "e5cc" $crc24 = new \PBurggraf\CRC\CRC24\CRC24(); var_dump(dechex($crc24->calculate('123456789'))); // string(6) "21cf02" $crc32 = new \PBurggraf\CRC\CRC32\CRC32(); var_dump(dechex($crc32->calculate('123456789'))); // string(8) "cbf43926"
测试
此项目使用 phpunit 测试 crc 计算的验证。
当前实现
8位 CRC
AUTOSAR、蓝牙、CDMA2000、DARC、DVB-S2、GSM-A、GSM-B、I-432-1(ITU)、I-CODE、LTE、MAXIM-DOW(MAXIM、DOW-CRC)、MIFARE-MAD、NRSC-5、OPENSAFETY、ROHC、SAE-J1850、SMBUS(CRC-8)、TECH-3250(AES、EBU)
16位 CRC
ARC(CRC-16、LHA、CRC-IBM)、CDMA2000、CMS、DDS-110、DECT-R(R-CRC-16)、DECT-X(X-CRC-16)、DNP、EN-13757、GENIBUS(DARC、EPC、EPC-C1G2、I-CODE)、GSM、IBM-3740(AUTOSAR、CCITT-FALSE)、IBM-SDLC(ISO-HDLC、ISO-IEC-14443-3-B、X-25、CRC-B)、ISO-IEC-14443-3-A(CRC-A)、KERMIT(CCITT、CCITT-TRUE、V-41-LSB、KERMIT)、LJ1200、MAXIM-DOW(MAXIM)、MCRF4XX、MODBUS、NRSC-5、OPENSAFETY-A OPENSAFETY-B、PROFIBUS(IEC-61158-2)、RIELLO、SPI-FUJITSU(AUG-CCITT)、T10-DIF、TELEDISK、TMS37157、UMTS(BUYPASS、VERIFONE)、USB、XMODEM(ACORN、LTE、V-41-MSB、ZMODEM)
24位 CRC
BLE、FLEXRAY-A、FLEXRAY-B、INTERLAKEN、LTE-A、LTE-B、OPENPGP(CRC-24)
32位 CRC
AIXM(CRC-32Q)、AUTOSAR、BASE91-D(CRC-32D)、BZIP2(AAL5、DECT-B、B-CRC-32)、CD-ROM-EDC、CKSUM(POSIX)、ISCSI(BASE91-C、CASTAGNOLI、INTERLAKEN、CRC-32C)、ISO-HDLC(CRC-32、ADCCP、V-42、XZ、PKZIP)、JAMCRC、MPEG-2、XFER