0.1.2 • Published 2 days ago

crc-multi v0.1.2

Weekly downloads
14
License
MIT
Repository
github
Last release
2 days ago

crc-multi

JavaScript library to perform several different CRC calculations in pure JavaScript.

About

This library is highly influenced by Bastian Molkenthin's Online CRC JavaScript Web Site. There are a few differences, specifically, this library uses JavaScript BigInts to perform calculations. As a result, it leads to a simplification of the code, but the response can't be directly used as an integer.

CRC Models

This library currently supports the 8, 16, 32, and 64 Bit CRC Algorithms listed on the RevEng CRC Catalogue. More algorithms may work, but has not yet been tested. See the list of algorithms below for a complete list.

Each of the algorithms listed on that page include check value that is used to test the CRC calculation against the string 123456789.

Usage

const {
  CRC,
  CRCModel,
} = require('crc-multi');

const model = CRCModel.GetModel('CRC-16/ARC');
/*
{
  width: 16,
  poly: 32773n,
  init: 0n,
  refin: true,
  refout: true,
  xorout: 0n,
  check: 47933n,
  residue: 0n,
  name: 'CRC-16/ARC'
}
*/

const crc = new CRC(model);

const check = crc.compute(Buffer.from('123456789'));
// 47933n
assert(check === BigInt('0xbb3d'));

Algorithm List

Algorithm(s)WidthCheckPolyInitRefInRefOutXorOut
CRC-8/AUTOSAR, CRC8_8H2F80xdf0x2f0xfffalsefalse0xff
CRC-8/BLUETOOTH80x260xa70x0truetrue0x0
CRC-8/CDMA2000, CRC8_CDMA200080xda0x9b0xfffalsefalse0x0
CRC-8/DARC, CRC8_DARC80x150x390x0truetrue0x0
CRC-8/DVB-S2, CRC8_DVB_S280xbc0xd50x0falsefalse0x0
CRC-8/GSM-A, CRC8_SAE_J1850_ZERO80x370x1d0x0falsefalse0x0
CRC-8/GSM-B80x940x490x0falsefalse0xff
CRC-8/I-432-1, CRC8_ITU, CRC-8/ITU80xa10x70x0falsefalse0x55
CRC-8/I-CODE, CRC8_ICODE80x7e0x1d0xfdfalsefalse0x0
CRC-8/LTE80xea0x9b0x0falsefalse0x0
CRC-8/MAXIM-DOW, CRC8_MAXIM, CRC-8/MAXIM80xa10x310x0truetrue0x0
CRC-8/MIFARE-MAD80x990x1d0xc7falsefalse0x0
CRC-8/NRSC-580xf70x310xfffalsefalse0x0
CRC-8/OPENSAFETY80x3e0x2f0x0falsefalse0x0
CRC-8/ROHC, CRC8_ROHC80xd00x70xfftruetrue0x0
CRC-8/SAE-J1850, CRC8_SAE_J185080x4b0x1d0xfffalsefalse0xff
CRC-8/SMBUS, CRC8, CRC-880xf40x70x0falsefalse0x0
CRC-8/TECH-3250, CRC8_EBU, CRC-8/EBU80x970x1d0xfftruetrue0x0
CRC-8/WCDMA, CRC8_WCDMA80x250x9b0x0truetrue0x0
CRC-16/ARC, CRC16_ARC160xbb3d0x80050x0truetrue0x0
CRC-16/CDMA2000, CRC16_CDMA2000160x4c060xc8670xfffffalsefalse0x0
CRC-16/CMS160xaee70x80050xfffffalsefalse0x0
CRC-16/DDS-110, CRC16_DDS_110160x9ecf0x80050x800dfalsefalse0x0
CRC-16/DECT-R, CRC16_DECT_R160x7e0x5890x0falsefalse0x1
CRC-16/DECT-X, CRC16_DECT_X160x7f0x5890x0falsefalse0x0
CRC-16/DNP, CRC16_DNP160xea820x3d650x0truetrue0xffff
CRC-16/EN-13757, CRC16_EN_13757160xc2b70x3d650x0falsefalse0xffff
CRC-16/GENIBUS, CRC16_GENIBUS160xd64e0x10210xfffffalsefalse0xffff
CRC-16/GSM160xce3c0x10210x0falsefalse0xffff
CRC-16/IBM-3740, CRC16_CCITT_FALSE, CRC-16/CCITT-FALSE160x29b10x10210xfffffalsefalse0x0
CRC-16/IBM-SDLC, CRC16_X_25, CRC-16/X-25160x906e0x10210xfffftruetrue0xffff
CRC-16/ISO-IEC-14443-3-A, CRC16_A, CRC-A160xbf050x10210xc6c6truetrue0x0
CRC-16/KERMIT, CRC16_KERMIT160x21890x10210x0truetrue0x0
CRC-16/LJ1200160xbdf40x6f630x0falsefalse0x0
CRC-16/MAXIM-DOW, CRC16_MAXIM, CRC-16/MAXIM160x44c20x80050x0truetrue0xffff
CRC-16/MCRF4XX, CRC16_MCRF4XX160x6f910x10210xfffftruetrue0x0
CRC-16/MODBUS, CRC16_MODBUS160x4b370x80050xfffftruetrue0x0
CRC-16/NRSC-5160xa0660x80b0xfffftruetrue0x0
CRC-16/OPENSAFETY-A160x5d380x59350x0falsefalse0x0
CRC-16/OPENSAFETY-B160x20fe0x755b0x0falsefalse0x0
CRC-16/PROFIBUS160xa8190x1dcf0xfffffalsefalse0xffff
CRC-16/RIELLO, CRC16_RIELLO160x63d00x10210xb2aatruetrue0x0
CRC-16/SPI-FUJITSU, CRC16_AUG_CCITT, CRC-16/AUG-CCITT160xe5cc0x10210x1d0ffalsefalse0x0
CRC-16/T10-DIF, CRC16_T10_DIF160xd0db0x8bb70x0falsefalse0x0
CRC-16/TELEDISK, CRC16_TELEDISK160xfb30xa0970x0falsefalse0x0
CRC-16/TMS37157, CRC16_TMS37157160x26b10x10210x89ectruetrue0x0
CRC-16/UMTS, CRC16_BUYPASS, CRC-16/BUYPASS160xfee80x80050x0falsefalse0x0
CRC-16/USB, CRC16_USB160xb4c80x80050xfffftruetrue0xffff
CRC-16/XMODEM, CRC16_CCIT_ZERO, CRC16_XMODEM160x31c30x10210x0falsefalse0x0
CRC-32/AIXM, CRC32_Q, CRC-32Q320x3010bf7f0x814141ab0x0falsefalse0x0
CRC-32/AUTOSAR320x1697d06a0xf4acfb130xfffffffftruetrue0xffffffff
CRC-32/BASE91-D, CRC32_D, CRC-32D320x873155760xa833982b0xfffffffftruetrue0xffffffff
CRC-32/BZIP2, CRC32_BZIP2320xfc8919180x4c11db70xfffffffffalsefalse0xffffffff
CRC-32/CD-ROM-EDC320x6ec2edc40x8001801b0x0truetrue0x0
CRC-32/CKSUM, CRC32_POSIX, CRC-32/POSIX320x765e76800x4c11db70x0falsefalse0xffffffff
CRC-32/ISCSI, CRC32_C, CRC-32C320xe30692830x1edc6f410xfffffffftruetrue0xffffffff
CRC-32/ISO-HDLC, CRC32, CRC-32320xcbf439260x4c11db70xfffffffftruetrue0xffffffff
CRC-32/JAMCRC, CRC32_JAMCRC320x340bc6d90x4c11db70xfffffffftruetrue0x0
CRC-32/MPEG-2, CRC32_MPEG2320x376e6e70x4c11db70xfffffffffalsefalse0x0
CRC-32/XFER, CRC32_XFER320xbd0be3380xaf0x0falsefalse0x0
CRC-64/ECMA-182, CRC64_ECMA_182640x6c40df5f0b4973470x42f0e1eba9ea36930x0falsefalse0x0
CRC-64/GO-ISO, CRC64_GO_ISO640xb90956c775a410010x1b0xfffffffffffffffftruetrue0xffffffffffffffff
CRC-64/WE, CRC64_WE640x62ec59e3f1a4f00a0x42f0e1eba9ea36930xfffffffffffffffffalsefalse0xffffffffffffffff
CRC-64/XZ, CRC64_XZ640x995dc9bbdf1939fa0x42f0e1eba9ea36930xfffffffffffffffftruetrue0xffffffffffffffff