using System.Diagnostics; using System.Text; namespace Password_Generator { static class PasswordGenerator { private static string RandomStr(int length, bool no_symbols = false) { StringBuilder builder = new StringBuilder(); Random rnd = new Random(); for (int i = 0; i < length; i++) { if (rnd.Next(0, 101) <= 60) //60% chance for a character { char c = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * rnd.NextDouble() + 65))); //random character if (no_symbols && Char.IsSymbol(c)) { while (Char.IsSymbol(c)) { c = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * rnd.NextDouble() + 65))); //random character } } builder.Append(c); } else //40% change for number { builder.Append(Convert.ToChar(rnd.Next(0, 10))); } } return builder.ToString(); } public static string New(int length, bool no_symbols = false) { File.WriteAllText(@".\\", RandomStr(length, no_symbols)); try { Process proc = new Process() { StartInfo = new ProcessStartInfo { FileName = "echo", //TODO: pipe the return value of RandomStr to gpg with the --quiet --encrypt --recipient {recipient} flags //Arguments = $"--quiet --decrypt {filePath}", UseShellExecute = false, RedirectStandardOutput = true, CreateNoWindow = true } }; proc.Start(); while (!proc.StandardOutput.EndOfStream) { string line = proc.StandardOutput.ReadLine(); Clipboard.SetText(line); //Process.Start("./ToastNotification.exe", $"\"{fileName} decrypted\" \"Password copied to clipboard\""); } } catch (Exception ex) { MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } return null; } } }