Crate crc[][src]

Expand description

crc

Rust implementation of CRC(16, 32, 64)

Usage

Compute CRC16

use crc::{Crc, Algorithm, CRC_16_IBM_SDLC, CRC_32_ISCSI};

pub const X25: Crc<u16> = Crc::<u16>::new(&CRC_16_IBM_SDLC);
pub const CASTAGNOLI: Crc<u32> = Crc::<u32>::new(&CRC_32_ISCSI);

assert_eq!(X25.checksum(b"123456789"), 0x906e);
assert_eq!(CASTAGNOLI.checksum(b"123456789"), 0xe3069283);

// use custom algorithm
const CUSTOM_ALG: Algorithm<u16> = Algorithm {
    poly: 0x8005,
    init: 0xffff,
    refin: false,
    refout: false,
    xorout: 0x0000,
    check: 0xaee7,
    residue: 0x0000
};
let crc = Crc::<u16>::new(&CUSTOM_ALG);
let mut digest = crc.digest();
digest.update(b"123456789");
assert_eq!(digest.finalize(), 0xaee7);

Structs

Algorithm

This struct describes a CRC algorithm using the fields specified by the Catalogue of parametrised CRC algorithms.

Crc
Digest

Constants

CRC_8_AUTOSAR
CRC_8_BLUETOOTH
CRC_8_CDMA2000
CRC_8_DARC
CRC_8_DVB_S2
CRC_8_GSM_A
CRC_8_GSM_B
CRC_8_I_432_1
CRC_8_I_CODE
CRC_8_LTE
CRC_8_MAXIM_DOW
CRC_8_MIFARE_MAD
CRC_8_NRSC_5
CRC_8_OPENSAFETY
CRC_8_ROHC
CRC_8_SAE_J1850
CRC_8_SMBUS
CRC_8_TECH_3250
CRC_8_WCDMA
CRC_16_ARC
CRC_16_CDMA2000
CRC_16_CMS
CRC_16_DDS_110
CRC_16_DECT_R
CRC_16_DECT_X
CRC_16_DNP
CRC_16_EN_13757
CRC_16_GENIBUS
CRC_16_GSM
CRC_16_IBM_3740
CRC_16_IBM_SDLC
CRC_16_ISO_IEC_14443_3_A
CRC_16_KERMIT
CRC_16_LJ1200
CRC_16_MAXIM_DOW
CRC_16_MCRF4XX
CRC_16_MODBUS
CRC_16_NRSC_5
CRC_16_OPENSAFETY_A
CRC_16_OPENSAFETY_B
CRC_16_PROFIBUS
CRC_16_RIELLO
CRC_16_SPI_FUJITSU
CRC_16_T10_DIF
CRC_16_TELEDISK
CRC_16_TMS37157
CRC_16_UMTS
CRC_16_USB
CRC_16_XMODEM
CRC_32_AIXM
CRC_32_AUTOSAR
CRC_32_BASE91_D
CRC_32_BZIP2
CRC_32_CD_ROM_EDC
CRC_32_CKSUM
CRC_32_ISCSI
CRC_32_ISO_HDLC
CRC_32_JAMCRC
CRC_32_MPEG_2
CRC_32_XFER
CRC_64_ECMA_182
CRC_64_GO_ISO
CRC_64_WE
CRC_64_XZ

Traits

Width