예제 #1
0
        public async Task BasicHash()
        {
            var strings = new[] { "This is string1\n", "This is string2\n", "This is string 3\n" };

            byte[][] buffers = strings.Select(x => Encoding.UTF8.GetBytes(x)).ToArray();

            var b = buffers.AsBucket(true);

            var r = await b.ReadSkipAsync(1024);

            Assert.AreEqual(49L, r);

            b.Reset();

            byte[]? hashResult = null;
            var c = b.MD5(r => hashResult = r);

            r = await c.ReadSkipAsync(1024);

            Assert.AreEqual(49L, r);

            Assert.IsNotNull(hashResult);
            Assert.AreEqual("E358B5530A87E41AF9168B4F45548AFC", TestExtensions.FormatHash(hashResult));

            b.Reset();
            hashResult = null;
            var c2 = b.SHA1(r => hashResult = r);

            r = await c2.ReadSkipAsync(1024);

            Assert.AreEqual(49L, r);

            Assert.IsNotNull(hashResult);
            Assert.AreEqual("D9F7CE90FB58072D8A68F69A0CB30C133F9B08CB", TestExtensions.FormatHash(hashResult));

            c2.Reset();

            r = await c2.ReadSkipAsync(1024);

            Assert.AreEqual(49L, r);

            Assert.IsNotNull(hashResult);
            Assert.AreEqual("D9F7CE90FB58072D8A68F69A0CB30C133F9B08CB", TestExtensions.FormatHash(hashResult));

#if NET5_0_OR_GREATER
            {
                var rr = MD5.HashData(Encoding.ASCII.GetBytes(string.Join("", strings)));

                Assert.AreEqual("E358B5530A87E41AF9168B4F45548AFC", TestExtensions.FormatHash(rr));

                rr = SHA1.HashData(Encoding.ASCII.GetBytes(string.Join("", strings)));

                Assert.AreEqual("D9F7CE90FB58072D8A68F69A0CB30C133F9B08CB", TestExtensions.FormatHash(rr));
            }
#endif
        }