Пример #1
0
        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);
        }
Пример #2
0
        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);
        }