public void ShouldGenerateAtLeast16ByteSalt()
            {
                // Arrange
                var service = new SHA512HashService();

                // Act
                var hash  = service.GenerateSalt();
                var bytes = Convert.FromBase64String(hash);

                // Assert
                Assert.True(bytes.Length >= 16);
            }
            public void ShouldNotGenerateTheSameSaltTwice()
            {
                // Arrange
                var service = new SHA512HashService();

                // Act
                var hash1 = service.GenerateSalt();
                var hash2 = service.GenerateSalt();

                // Assert
                Assert.NotEqual(hash1, hash2);
            }
            public void ShouldAlwaysGenerateTheSameHashForTheSameInput()
            {
                // Arrange
                const string testData = "This is a test";
                var          service  = new SHA512HashService();

                // Act
                var hash1 = service.HashString(testData);
                var hash2 = service.HashString(testData);

                // Assert
                Assert.Equal(hash1, hash2);
            }
            public void ShouldAlwaysGenerateTheSameHashForTheSameInput()
            {
                // Arrange
                var testData = Encoding.UTF8.GetBytes("This is a test");
                var service  = new SHA512HashService();

                // Act
                var hash1 = service.Hash(testData);
                var hash2 = service.Hash(testData);

                // Assert
                Assert.Equal(hash1, hash2);
            }