public void ComputeHash_MD5HexHash_CompareOutput()
        {
            GenericHasher<MD5CryptoServiceProvider> hasher = new GenericHasher<MD5CryptoServiceProvider>();
            string stringToHash = "This is my hashable stuff";
            string hash = hasher.ComputeHashToHex(stringToHash, false);

            Assert.AreEqual("C00A7084E0EA4355B50240EE9EFA8E2A", hash);
        }
        public void ComputeAndCompare_StringComputeSHA256HashAndComparie_EqualHashPass()
        {
            GenericHasher<SHA256Managed> hasher = new GenericHasher<SHA256Managed>();
            hasher.Encoding = Encoding.UTF8;
            string stringA = "welcoMe";
            string stringB = "welcoMe";

            Assert.IsTrue(hasher.ComputeAndCompare(stringA, stringB));
        }
        public void ComputeHash_CreateMD5HashAndCompare_EqualHashPass()
        {
            GenericHasher<MD5CryptoServiceProvider> hasher = new GenericHasher<MD5CryptoServiceProvider>();
            string stringToHash = "This is my hashable stuff";
            byte[] hash = hasher.ComputeHash(stringToHash);
            byte[] md5hash = new MD5CryptoServiceProvider().ComputeHash(hasher.Encoding.GetBytes(stringToHash));

            Assert.IsTrue(hasher.AreHashesEqual(hash, md5hash));
        }
        public void ComputeHash_GenerateSHA512Hash_CompareOutput()
        {
            GenericHasher<SHA512Managed> hasher = new GenericHasher<SHA512Managed>();
            string stringToHash;
            string hashed;

            stringToHash = "This is my cool hasher!";

            hashed = hasher.ComputeHashToString(stringToHash);

            Assert.AreEqual("VWCtgRIln4ysDD8kVqdoRDtUazQlEzRJtGXLJFqE49CUwTFmPF+agJsqZl4R3Od77Hv9k5x5Ozl+z+XjGYLqnA==", hashed);
        }
        public void ComputeHash_HashValueFiveTimesAndCompareToNative_Pass()
        {
            GenericHasher<SHA256Managed> hasher = new GenericHasher<SHA256Managed>();
            hasher.Encoding = Encoding.UTF8;
            string stringA = "welcoMe";
            byte[] bytesToHash = hasher.Encoding.GetBytes(stringA);
            int iterationCount = 5;
            byte[] hash = null;
            byte[] compareHash = hasher.Encoding.GetBytes(stringA);

            // Our method
            hash = hasher.ComputeHash(bytesToHash, iterationCount);

            // native
            using(var digester = new SHA256Managed())
            {
                for (int i = 0; i < 5; i++)
                    compareHash = digester.ComputeHash(compareHash);
            }

            CollectionAssert.AreEqual(compareHash, hash);
        }