static void ShakeAndBake(string password, int seed, int size) { SaltShaker shake; SaltPair saltFirst; SaltPair saltSecond; SaltPair hashFirst; SaltPair hashSecond; bool match; string salted; //Start with a pass shake = new SaltShaker(char.MinValue, char.MaxValue, size, SaltCreationModel.NonRepeatableStrong, SaltEmbeddingModel.Middle, seed); Console.WriteLine("=========================================="); Console.WriteLine("Type A - nonRepeatable salts"); Console.WriteLine("=========================================="); Console.WriteLine("Password: "******"------------------------------------------"); Console.WriteLine("Salt: " + saltFirst.Salt.GetHashCode()); Console.WriteLine("Salted: " + saltFirst.SaltedPayload.GetHashCode()); Console.WriteLine("------------------------------------------"); shake = new SaltShaker(char.MinValue, char.MaxValue, size, SaltCreationModel.NonRepeatableStrong, SaltEmbeddingModel.Middle, seed); saltSecond = shake.Salt(password); salted = shake.Embed(password, saltFirst.Salt); Console.WriteLine("Salt: " + saltSecond.Salt.GetHashCode()); Console.WriteLine("Salted: " + saltSecond.SaltedPayload.GetHashCode()); Console.WriteLine("------------------------------------------"); match = saltFirst.SaltedPayload.Equals(saltSecond.SaltedPayload); Console.WriteLine("Matches: " + match); match = saltFirst.SaltedPayload.Equals(salted); Console.WriteLine("MatchesB: " + match); salted = shake.Embed(password, saltSecond.Salt); match = saltSecond.SaltedPayload.Equals(salted); Console.WriteLine("MatchesC: " + match); Console.WriteLine("=========================================="); shake = new SaltShaker(char.MinValue, char.MaxValue, size, SaltCreationModel.Repeatable, SaltEmbeddingModel.Randomized, seed); Console.WriteLine("Type B"); Console.WriteLine("=========================================="); saltFirst = shake.Salt(password); hashFirst = PasswordUtils.Hash(shake, password); Console.WriteLine("------------------------------------------"); Console.WriteLine("Salt: " + saltFirst.Salt.GetHashCode()); Console.WriteLine("Salted: " + saltFirst.SaltedPayload.GetHashCode()); Console.WriteLine("Hashed: " + hashFirst.SaltedPayload.GetHashCode()); Console.WriteLine("UtilsMatch: " + PasswordUtils.Matches(shake, password, hashFirst.SaltedPayload)); Console.WriteLine("------------------------------------------"); shake = new SaltShaker(char.MinValue, char.MaxValue, size, SaltCreationModel.Repeatable, SaltEmbeddingModel.Randomized, seed); saltSecond = shake.Salt(password); hashSecond = PasswordUtils.Hash(shake, password); Console.WriteLine("Salt: " + saltSecond.Salt.GetHashCode()); Console.WriteLine("Salted: " + saltSecond.SaltedPayload.GetHashCode()); Console.WriteLine("Hashed: " + hashFirst.SaltedPayload.GetHashCode()); Console.WriteLine("UtilsMatch: " + PasswordUtils.Matches(shake, password, hashSecond.SaltedPayload)); Console.WriteLine("------------------------------------------"); match = saltFirst.SaltedPayload.Equals(saltSecond.SaltedPayload); Console.WriteLine("Matches (Pass): " + match); match = hashFirst.SaltedPayload.Equals(hashSecond.SaltedPayload); Console.WriteLine("Matches (Hash): " + match); Console.WriteLine("=========================================="); }