sdk/Common/Internal/Crc64HashAlgorithm.cs (35 lines of code) (raw):
using System;
using Aliyun.OSS.Util;
namespace Aliyun.OSS.Common.Internal
{
public class Crc64HashAlgorithm : System.Security.Cryptography.HashAlgorithm
{
private ulong crc64 = 0;
public Crc64HashAlgorithm()
{
Crc64.InitECMA();
}
public override void Initialize()
{
Crc64.InitECMA();
}
public void SetInitCrc(ulong initCrc)
{
crc64 = initCrc;
}
public override int HashSize
{
get {
return 64;
}
}
protected override void HashCore(byte[] array, int ibStart, int cbSize)
{
crc64 = Crc64.Compute(array, ibStart, cbSize, crc64);
}
protected override byte[] HashFinal()
{
return BitConverter.GetBytes(crc64);
}
}
}