5 releases
0.0.4 | Dec 3, 2023 |
---|---|
0.0.3 | Nov 16, 2023 |
0.0.2 | Nov 16, 2023 |
0.0.1 | Nov 16, 2023 |
0.0.0 | Nov 16, 2023 |
#1263 in Algorithms
Used in stegano
41KB
630 lines
CRC32
Resurrecting the crc32
crate from the ashes.
Usage
Add crc32-v2
to your Cargo.toml
file:
[dependencies]
crc32-v2 = "0.0.4"
or run:
cargo add crc32-v2
Examples
use crc32_v2::crc32;
use crc32_v2::byfour::crc32_little;
const CRC32_INIT: u32 = 0; // Initial CRC value, you can customize it
fn main() {
// Your data to calculate CRC for
let data = b"Hello, world!";
// Calculate CRC
let result_crc = crc32(CRC32_INIT, data);
// Print the result
println!("CRC-32: {:x}", result_crc);
// Calculate CRC using the little-endian method
let result_crc_little = crc32_little(CRC32_INIT, data);
// Print the result
println!("CRC-32 (Little Endian): {:x}", result_crc_little);
}
// Output
// CRC-32: ebe6c6e6
// CRC-32 (Little Endian): a29eb9bf
lib.rs
:
CRC32 V2
This crate provides a simple CRC32 implementation in Rust.
Usage
To use this crate, add the following to your Cargo.toml
file:
[dependencies]
crc32_v2 = "0.0.4"
Then, you can use the crc32
or crc32_little
functions to calculate the CRC32 checksum of a byte buffer.
Example
use crc32_v2::byfour::crc32_little;
use crc32_v2::crc32;
let crc = crc32(0, &[0u8, 1u8, 2u8, 3u8]);
assert_eq!(crc, 0x8BB98613);
let crc_little = crc32_little(crc, &[0u8, 1u8, 2u8, 3u8]);
assert_eq!(crc, 0x8BB98613);
Implementation Details
The CRC32 algorithm is implemented using a standard polynomial and lookup tables for optimization.
The crc32
function takes two parameters:
start_crc
: the initial CRC32 value (usually 0)buf
: a slice containing the input bytes
It returns a u32
, which is the CRC32 checksum of the input buffer.