21 public virtual byte[]?
Hash
45 [Obsolete(
"The default implementation of this cryptography algorithm is not supported.", DiagnosticId =
"SYSLIB0007", UrlFormat =
"https://aka.ms/dotnet-warnings/{0}")]
51 [RequiresUnreferencedCode(
"The default algorithm implementations might be removed, use strong type references like 'RSA.Create()' instead.")]
102 if (count < 0 || count >
buffer.Length)
142 if (inputStream ==
null)
161 if (num > clearLimit)
175 byte[] result = (
byte[])
HashValue.Clone();
191 protected virtual void Dispose(
bool disposing)
199 public int TransformBlock(
byte[] inputBuffer,
int inputOffset,
int inputCount,
byte[]? outputBuffer,
int outputOffset)
203 HashCore(inputBuffer, inputOffset, inputCount);
204 if (outputBuffer !=
null && (inputBuffer != outputBuffer || inputOffset != outputOffset))
206 Buffer.
BlockCopy(inputBuffer, inputOffset, outputBuffer, outputOffset, inputCount);
214 HashCore(inputBuffer, inputOffset, inputCount);
219 array =
new byte[inputCount];
232 if (inputBuffer ==
null)
240 if (inputCount < 0 || inputCount > inputBuffer.Length)
244 if (inputBuffer.Length - inputCount < inputOffset)
275 if (
array.Length == num)
278 bytesWritten =
array.Length;
static unsafe void Clear(Array array)
static void BlockCopy(Array src, int srcOffset, Array dst, int dstOffset, int count)
static ArrayPool< T > Shared
static void SuppressFinalize(object obj)
int Read(byte[] buffer, int offset, int count)
Task< int > ReadAsync(byte[] buffer, int offset, int count)
static string Argument_InvalidValue
static string Cryptography_HashNotYetFinalized
static string InvalidOperation_IncorrectImplementation
static string Argument_InvalidOffLen
static string ArgumentOutOfRange_NeedNonNegNum
static object CreateFromName(string name)
static HashAlgorithm CreateDefaultHashAlgorithm()
static void ZeroMemory(Span< byte > buffer)
void HashCore(byte[] array, int ibStart, int cbSize)
virtual void Dispose(bool disposing)
virtual bool CanTransformMultipleBlocks
static HashAlgorithm Create()
virtual int OutputBlockSize
virtual bool TryHashFinal(Span< byte > destination, out int bytesWritten)
async Task< byte[]> ComputeHashAsyncCore(Stream inputStream, CancellationToken cancellationToken)
bool TryComputeHash(ReadOnlySpan< byte > source, Span< byte > destination, out int bytesWritten)
static ? HashAlgorithm Create(string hashName)
byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount)
byte[] ComputeHash(byte[] buffer, int offset, int count)
virtual bool CanReuseTransform
int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[]? outputBuffer, int outputOffset)
byte[] ComputeHash(byte[] buffer)
virtual void HashCore(ReadOnlySpan< byte > source)
byte[] CaptureHashCodeAndReinitialize()
void ValidateTransformBlock(byte[] inputBuffer, int inputOffset, int inputCount)
virtual int InputBlockSize
Task< byte[]> ComputeHashAsync(Stream inputStream, CancellationToken cancellationToken=default(CancellationToken))
byte[] ComputeHash(Stream inputStream)
new ConfiguredTaskAwaitable< TResult > ConfigureAwait(bool continueOnCapturedContext)
void CopyTo(Span< T > destination)