Class CyclicRedundancyCheck64
Provides a CRC-64 implementation of the CRC (Cyclic Redundancy Check) checksum algorithm for 64-bit hash values. This class cannot be inherited.
public sealed class CyclicRedundancyCheck64 : CyclicRedundancyCheck, IHash, IConfigurable<CyclicRedundancyCheckOptions>
- Inheritance
-
CyclicRedundancyCheck64
- Implements
- Inherited Members
Examples
The following example demonstrates how to compute a 64-bit Cyclic Redundancy Check (CRC) checksum using the CyclicRedundancyCheck64 class.
using System;
using System.Text;
using Cuemon.Security;
namespace MyApp.Examples;
public class CyclicRedundancyCheck64Example
{
public void Demonstrate()
{
// Create CRC-64 instance with default ECMA-182 polynomial
var crc64 = new CyclicRedundancyCheck64();
// Compute checksum from ASCII input
byte[] data = Encoding.ASCII.GetBytes("123456789");
HashResult result = crc64.ComputeHash(data);
// Display the checksum in hexadecimal
string hex = result.ToHexadecimalString();
Console.WriteLine(hex); // 6c40df5f0b497347
// Create CRC-64 with custom polynomial
var customCrc = new CyclicRedundancyCheck64(
polynomial: 0x42F0E1EBA9EA3693,
initialValue: 0xFFFFFFFFFFFFFFFF,
finalXor: 0xFFFFFFFFFFFFFFFF);
HashResult customResult = customCrc.ComputeHash(data);
Console.WriteLine(customResult.ToHexadecimalString());
}
}
Constructors
CyclicRedundancyCheck64(ulong, ulong, ulong, Action<CyclicRedundancyCheckOptions>)
Initializes a new instance of the CyclicRedundancyCheck64 class.
public CyclicRedundancyCheck64(ulong polynomial = 4823603603198064275, ulong initialValue = 0, ulong finalXor = 0, Action<CyclicRedundancyCheckOptions> setup = null)
Parameters
polynomialulongThis is a binary value that should be specified as a hexadecimal number. Default is
0x42F0E1EBA9EA3693.initialValueulongThis parameter specifies the initial value of the register when the algorithm starts. Default is
0x0000000000000000.finalXorulongThis is an W-bit value that should be specified as a hexadecimal number. Default is
0x0000000000000000.setupAction<CyclicRedundancyCheckOptions>The CyclicRedundancyCheckOptions which may be configured.
Methods
ComputeHash(byte[])
Computes the hash value for the specified byte[].
public override HashResult ComputeHash(byte[] input)
Parameters
inputbyte[]The byte[] to compute the hash code for.
Returns
- HashResult
A HashResult containing the computed hash code of the specified
input.
Remarks
Inspiration and praises goes to http://www.sunshine2k.de/articles/coding/crc/understanding_crc.html
PolynomialIndexInitializer(byte)
Returns the initial value for the specified index of the polynomial LookupTable.
protected override ulong PolynomialIndexInitializer(byte index)
Parameters
indexbyteThe index of the array of polynomial values ranging from 0 to 255.
Returns
- ulong
The initial value for the specified
index.
PolynomialSlotCalculator(ref ulong, ulong)
Computes the polynomial checksum value in steps of 8 (0-7) x 256 (0-255) giving a total of 2048 times.
protected override void PolynomialSlotCalculator(ref ulong checksum, ulong polynomial)
Parameters
checksumulongThe checksum that is iterated 8 times (0-7) in 256 steps (0-255).
polynomialulongThe polynomial value.