IHasher
Interface to wrap either a HashAlgorithm or a NonCryptographicHashAlgorithm
            to provide a common interface for hashing a stream.
            
                using System;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
namespace Azure.Storage
{
    internal interface IHasher : IDisposable
    {
        int HashSizeInBytes { get; }
        Task<byte[]> ComputeHashInternal(Stream stream, bool async, CancellationToken cancellationToken);
        void AppendHash(ReadOnlySpan<byte> content);
        int GetFinalHash(Span<byte> hashDestination);
    }
}