public static bool TryHash160(ReadOnlySpan <byte> message, Span <byte> hash) { Span <byte> tempBuffer = stackalloc byte[UInt256.Size]; using var sha256 = SHA256.Create(); using var ripemd160 = new RIPEMD160(); if (sha256.TryComputeHash(message, tempBuffer, out var written1) && ripemd160.TryComputeHash(tempBuffer, hash, out var written2)) { Debug.Assert(written1 == UInt256.Size && written2 == UInt160.Size); return(true); } return(false); }
public static bool TryHash160(ReadOnlySequence <byte> sequence, Span <byte> hash) { var hasher = IncrementalHash.CreateHash(HashAlgorithmName.SHA256); foreach (var segment in sequence) { hasher.AppendData(segment.Span); } Span <byte> tempBuffer = stackalloc byte[UInt256.Size]; using var ripemd160 = new RIPEMD160(); if (hasher.TryGetHashAndReset(tempBuffer, out var written1) && ripemd160.TryComputeHash(tempBuffer, hash, out var written2)) { Debug.Assert(written1 == UInt256.Size && written2 == UInt160.Size); return(true); } return(false); }