public void HashesEmptyBuffer() { // Arrange using (var target = new MD5IncrementalHash()) { // Act target.AppendData(Empty, 0, 0); var actual = target.GetHashAndReset(); // Assert Assert.Equal(HashOfEmpty, actual); } }
public void ProducesKnownHash() { // Arrange using (var target = new MD5IncrementalHash()) { // Act target.AppendData(Foobar, 0, Foobar.Length); var actual = target.GetHashAndReset(); // Assert Assert.Equal(HashOfFoobar, actual); } }
public void ResetAllowsReuse() { // Arrange using (var target = new MD5IncrementalHash()) { var firstInput = Encoding.ASCII.GetBytes("ignored"); // Act target.AppendData(firstInput, 0, firstInput.Length); target.GetHashAndReset(); target.AppendData(Foobar, 0, Foobar.Length); var actual = target.GetHashAndReset(); // Assert Assert.Equal(HashOfFoobar, actual); } }
public void HashesPartOfTheProvidedBuffer() { // Arrange using (var target = new MD5IncrementalHash()) { var expected = new byte[] // MD5 hash of "ooba" { 0xdb, 0xec, 0xe8, 0x01, 0xac, 0xcd, 0x4d, 0xb2, 0xed, 0x8c, 0x1c, 0x86, 0x3f, 0x5a, 0xad, 0x92 }; // Act target.AppendData(Foobar, 1, 4); var actual = target.GetHashAndReset(); // Assert Assert.Equal(expected, actual); } }
public void CanBeRepeatedlyResetWithTheSameResut() { // Arrange using (var target = new MD5IncrementalHash()) { // Act var first = target.GetHashAndReset(); var second = target.GetHashAndReset(); var third = target.GetHashAndReset(); // Assert Assert.Equal(HashOfEmpty, first); Assert.Equal(HashOfEmpty, second); Assert.Equal(HashOfEmpty, third); } }
public static async Task<string> GetStreamContentMD5(Stream stream) { using (var md5 = new MD5IncrementalHash()) { var buffer = new byte[8192]; var read = buffer.Length; while (read > 0) { read = await stream.ReadAsync(buffer, 0, buffer.Length); md5.AppendData(buffer, 0, read); } var hashBytes = md5.GetHashAndReset(); var hashBase64 = Convert.ToBase64String(hashBytes); return hashBase64; } }