Neurotoxin Powered Marketing

    crc-multi

    0.1.1 • Public • Published

    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) Width Check Poly Init RefIn RefOut XorOut
    CRC-8/AUTOSAR, CRC8_8H2F 8 0xdf 0x2f 0xff false false 0xff
    CRC-8/BLUETOOTH 8 0x26 0xa7 0x0 true true 0x0
    CRC-8/CDMA2000, CRC8_CDMA2000 8 0xda 0x9b 0xff false false 0x0
    CRC-8/DARC, CRC8_DARC 8 0x15 0x39 0x0 true true 0x0
    CRC-8/DVB-S2, CRC8_DVB_S2 8 0xbc 0xd5 0x0 false false 0x0
    CRC-8/GSM-A, CRC8_SAE_J1850_ZERO 8 0x37 0x1d 0x0 false false 0x0
    CRC-8/GSM-B 8 0x94 0x49 0x0 false false 0xff
    CRC-8/I-432-1, CRC8_ITU, CRC-8/ITU 8 0xa1 0x7 0x0 false false 0x55
    CRC-8/I-CODE, CRC8_ICODE 8 0x7e 0x1d 0xfd false false 0x0
    CRC-8/LTE 8 0xea 0x9b 0x0 false false 0x0
    CRC-8/MAXIM-DOW, CRC8_MAXIM, CRC-8/MAXIM 8 0xa1 0x31 0x0 true true 0x0
    CRC-8/MIFARE-MAD 8 0x99 0x1d 0xc7 false false 0x0
    CRC-8/NRSC-5 8 0xf7 0x31 0xff false false 0x0
    CRC-8/OPENSAFETY 8 0x3e 0x2f 0x0 false false 0x0
    CRC-8/ROHC, CRC8_ROHC 8 0xd0 0x7 0xff true true 0x0
    CRC-8/SAE-J1850, CRC8_SAE_J1850 8 0x4b 0x1d 0xff false false 0xff
    CRC-8/SMBUS, CRC8, CRC-8 8 0xf4 0x7 0x0 false false 0x0
    CRC-8/TECH-3250, CRC8_EBU, CRC-8/EBU 8 0x97 0x1d 0xff true true 0x0
    CRC-8/WCDMA, CRC8_WCDMA 8 0x25 0x9b 0x0 true true 0x0
    CRC-16/ARC, CRC16_ARC 16 0xbb3d 0x8005 0x0 true true 0x0
    CRC-16/CDMA2000, CRC16_CDMA2000 16 0x4c06 0xc867 0xffff false false 0x0
    CRC-16/CMS 16 0xaee7 0x8005 0xffff false false 0x0
    CRC-16/DDS-110, CRC16_DDS_110 16 0x9ecf 0x8005 0x800d false false 0x0
    CRC-16/DECT-R, CRC16_DECT_R 16 0x7e 0x589 0x0 false false 0x1
    CRC-16/DECT-X, CRC16_DECT_X 16 0x7f 0x589 0x0 false false 0x0
    CRC-16/DNP, CRC16_DNP 16 0xea82 0x3d65 0x0 true true 0xffff
    CRC-16/EN-13757, CRC16_EN_13757 16 0xc2b7 0x3d65 0x0 false false 0xffff
    CRC-16/GENIBUS, CRC16_GENIBUS 16 0xd64e 0x1021 0xffff false false 0xffff
    CRC-16/GSM 16 0xce3c 0x1021 0x0 false false 0xffff
    CRC-16/IBM-3740, CRC16_CCITT_FALSE, CRC-16/CCITT-FALSE 16 0x29b1 0x1021 0xffff false false 0x0
    CRC-16/IBM-SDLC, CRC16_X_25, CRC-16/X-25 16 0x906e 0x1021 0xffff true true 0xffff
    CRC-16/ISO-IEC-14443-3-A, CRC16_A, CRC-A 16 0xbf05 0x1021 0xc6c6 true true 0x0
    CRC-16/KERMIT, CRC16_KERMIT 16 0x2189 0x1021 0x0 true true 0x0
    CRC-16/LJ1200 16 0xbdf4 0x6f63 0x0 false false 0x0
    CRC-16/MAXIM-DOW, CRC16_MAXIM, CRC-16/MAXIM 16 0x44c2 0x8005 0x0 true true 0xffff
    CRC-16/MCRF4XX, CRC16_MCRF4XX 16 0x6f91 0x1021 0xffff true true 0x0
    CRC-16/MODBUS, CRC16_MODBUS 16 0x4b37 0x8005 0xffff true true 0x0
    CRC-16/NRSC-5 16 0xa066 0x80b 0xffff true true 0x0
    CRC-16/OPENSAFETY-A 16 0x5d38 0x5935 0x0 false false 0x0
    CRC-16/OPENSAFETY-B 16 0x20fe 0x755b 0x0 false false 0x0
    CRC-16/PROFIBUS 16 0xa819 0x1dcf 0xffff false false 0xffff
    CRC-16/RIELLO, CRC16_RIELLO 16 0x63d0 0x1021 0xb2aa true true 0x0
    CRC-16/SPI-FUJITSU, CRC16_AUG_CCITT, CRC-16/AUG-CCITT 16 0xe5cc 0x1021 0x1d0f false false 0x0
    CRC-16/T10-DIF, CRC16_T10_DIF 16 0xd0db 0x8bb7 0x0 false false 0x0
    CRC-16/TELEDISK, CRC16_TELEDISK 16 0xfb3 0xa097 0x0 false false 0x0
    CRC-16/TMS37157, CRC16_TMS37157 16 0x26b1 0x1021 0x89ec true true 0x0
    CRC-16/UMTS, CRC16_BUYPASS, CRC-16/BUYPASS 16 0xfee8 0x8005 0x0 false false 0x0
    CRC-16/USB, CRC16_USB 16 0xb4c8 0x8005 0xffff true true 0xffff
    CRC-16/XMODEM, CRC16_CCIT_ZERO, CRC16_XMODEM 16 0x31c3 0x1021 0x0 false false 0x0
    CRC-32/AIXM, CRC32_Q, CRC-32Q 32 0x3010bf7f 0x814141ab 0x0 false false 0x0
    CRC-32/AUTOSAR 32 0x1697d06a 0xf4acfb13 0xffffffff true true 0xffffffff
    CRC-32/BASE91-D, CRC32_D, CRC-32D 32 0x87315576 0xa833982b 0xffffffff true true 0xffffffff
    CRC-32/BZIP2, CRC32_BZIP2 32 0xfc891918 0x4c11db7 0xffffffff false false 0xffffffff
    CRC-32/CD-ROM-EDC 32 0x6ec2edc4 0x8001801b 0x0 true true 0x0
    CRC-32/CKSUM, CRC32_POSIX, CRC-32/POSIX 32 0x765e7680 0x4c11db7 0x0 false false 0xffffffff
    CRC-32/ISCSI, CRC32_C, CRC-32C 32 0xe3069283 0x1edc6f41 0xffffffff true true 0xffffffff
    CRC-32/ISO-HDLC, CRC32, CRC-32 32 0xcbf43926 0x4c11db7 0xffffffff true true 0xffffffff
    CRC-32/JAMCRC, CRC32_JAMCRC 32 0x340bc6d9 0x4c11db7 0xffffffff true true 0x0
    CRC-32/MPEG-2, CRC32_MPEG2 32 0x376e6e7 0x4c11db7 0xffffffff false false 0x0
    CRC-32/XFER, CRC32_XFER 32 0xbd0be338 0xaf 0x0 false false 0x0
    CRC-64/ECMA-182, CRC64_ECMA_182 64 0x6c40df5f0b497347 0x42f0e1eba9ea3693 0x0 false false 0x0
    CRC-64/GO-ISO, CRC64_GO_ISO 64 0xb90956c775a41001 0x1b 0xffffffffffffffff true true 0xffffffffffffffff
    CRC-64/WE, CRC64_WE 64 0x62ec59e3f1a4f00a 0x42f0e1eba9ea3693 0xffffffffffffffff false false 0xffffffffffffffff
    CRC-64/XZ, CRC64_XZ 64 0x995dc9bbdf1939fa 0x42f0e1eba9ea3693 0xffffffffffffffff true true 0xffffffffffffffff

    Install

    npm i crc-multi

    DownloadsWeekly Downloads

    3

    Version

    0.1.1

    License

    MIT

    Unpacked Size

    165 kB

    Total Files

    9

    Last publish

    Collaborators

    • slosarek