static void Main(string[] args) { Console.WriteLine("Hashing devices found ::"); foreach (var AcceleratorDevice in AcceleratorDevice.All) { Console.WriteLine($" {AcceleratorDevice}"); } Console.WriteLine(""); if (args == null || args.Length == 0) { throw new ArgumentException("No arguments supplied"); } IHash hash; switch (args[0].ToLowerInvariant()) { case "salsa": hash = new Salsa20(); break; case "jenkins": hash = new Jenkins96(); break; case "benchmark": BenchmarkJenkins(args); return; case "wordlist": hash = new Wordlist(); break; case "variation": hash = new VarientGen(); break; case "mix": hash = new MixMatch(); break; case "markov": hash = new MarkovChain(); break; default: throw new ArgumentException("Invalid hash type"); } // override console exit event CleanExitHandler.Attach(); hash.LoadParameters(args); hash.Start(); Console.ReadLine(); }