Esempio n. 1
0
        static void BruteForceAttack(HashFunctionBase algorithm)
        {
            var password = "******";
            var salt     = CryptoHelper.GenerateBytes(algorithm.SaltSize);
            var hash     = algorithm.GenerateHash(password.ToBytes(), salt);

            var solved = GetPasswords(password.Length)
                         .First(s => CryptoHelper.ByteArrayEqual(algorithm.GenerateHash(s.ToBytes(), salt), hash));

            Assert.AreEqual(password, solved);
        }
Esempio n. 2
0
        static void BruteForceAttack_Parallel(HashFunctionBase algorithm)
        {
            var password = "******";
            var salt     = CryptoHelper.GenerateBytes(algorithm.SaltSize);
            var hash     = algorithm.GenerateHash(password.ToBytes(), salt);

            string solved = null;

            Parallel.ForEach(GetPasswords(password.Length), (s, state) =>
            {
                if (!CryptoHelper.ByteArrayEqual(algorithm.GenerateHash(s.ToBytes(), salt), hash))
                {
                    return;
                }

                solved = s;
                state.Stop();
            });
            Assert.AreEqual(password, solved);
        }