From 7e3b23eb88aa7d6b75341c098a51ff27b54fc80c Mon Sep 17 00:00:00 2001 From: Emma Nora Theuer Date: Sat, 7 Sep 2024 13:46:20 +0200 Subject: [PATCH] Split up into 2 files for better structure --- Passgen/src/main/java/Main.java | 60 ++--------------------------- Passgen/src/main/java/Passgen.java | 61 ++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 56 deletions(-) create mode 100644 Passgen/src/main/java/Passgen.java diff --git a/Passgen/src/main/java/Main.java b/Passgen/src/main/java/Main.java index 33e1504..71d0ac1 100644 --- a/Passgen/src/main/java/Main.java +++ b/Passgen/src/main/java/Main.java @@ -1,13 +1,7 @@ -import java.security.SecureRandom; -import java.io.IOException; -import java.nio.file.Paths; -import java.nio.file.Files; -import java.util.List; import picocli.CommandLine; import picocli.CommandLine.Option; public class Main implements Runnable { - private static SecureRandom random; @Option(names = {"-x", "--xkcd"}, description = "Will generate an xkcd-style password (See xkcd 936)") private boolean xkcd = false; @@ -21,74 +15,28 @@ public class Main implements Runnable { @Option(names = {"-h", "--help"}, usageHelp = true, description = "Displays this help message and exits.") private boolean help; - private static String generate_simple_password(int count) { - String simpleCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; - String password = ""; - int randomIndex; - char randomChar; - for (int i = 0; i < count; i++) { - randomIndex = random.nextInt(simpleCharacters.length()); - randomChar = simpleCharacters.charAt(randomIndex); - password = password + randomChar; - } - return password; - } - - private static String generate_regular_password(int count) { - String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"; - String password = ""; - int randomIndex; - char randomChar; - for (int i = 0; i < count; i++) { - randomIndex = random.nextInt(characters.length()); - randomChar = characters.charAt(randomIndex); - password = password + randomChar; - } - return password; - } - - private static String generate_xkcd_password(int count) { - String password = ""; - try { - List dictionary = Files.readAllLines(Paths.get("/usr/share/dict/words")); - - int randomIndex; - String randomWord; - for (int i = 0; i < count; i++) { - randomIndex = random.nextInt(dictionary.size()); - randomWord = dictionary.get(randomIndex); - password = password + randomWord; - password = password + " "; - } - } catch (IOException e) { - e.printStackTrace(); - System.out.println("An error occured while reading /usr/share/dict/words - Is the file present?"); - System.exit(2); - } - return password; - } public static void main(String[] args) { - random = new SecureRandom(); int exitCode = new CommandLine(new Main()).execute(args); System.exit(exitCode); } @Override public void run() { + final Passgen passgen = new Passgen(); if (xkcd && simple) { System.out.println("Error: Only use one of xkcd (-x), simple (-s) or regular (-r) at once."); System.exit(2); } if (xkcd) { - System.out.println(generate_xkcd_password(length)); + System.out.println(passgen.generate_xkcd_password(length)); System.exit(0); } else if (simple) { - System.out.println(generate_simple_password(length)); + System.out.println(passgen.generate_simple_password(length)); System.exit(0); } else { - System.out.println(generate_regular_password(length)); + System.out.println(passgen.generate_regular_password(length)); System.exit(0); } } diff --git a/Passgen/src/main/java/Passgen.java b/Passgen/src/main/java/Passgen.java new file mode 100644 index 0000000..9d307b1 --- /dev/null +++ b/Passgen/src/main/java/Passgen.java @@ -0,0 +1,61 @@ +import java.security.SecureRandom; +import java.io.IOException; +import java.nio.file.Paths; +import java.nio.file.Files; +import java.util.List; + +public class Passgen { + private static SecureRandom random; + + + public String generate_simple_password(int count) { + random = new SecureRandom(); + String simpleCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; + String password = ""; + int randomIndex; + char randomChar; + for (int i = 0; i < count; i++) { + randomIndex = random.nextInt(simpleCharacters.length()); + randomChar = simpleCharacters.charAt(randomIndex); + password = password + randomChar; + } + return password; + } + + public String generate_regular_password(int count) { + random = new SecureRandom(); + String characters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!@#$%^&*"; + String password = ""; + int randomIndex; + char randomChar; + for (int i = 0; i < count; i++) { + randomIndex = random.nextInt(characters.length()); + randomChar = characters.charAt(randomIndex); + password = password + randomChar; + } + return password; + } + + public String generate_xkcd_password(int count) { + random = new SecureRandom(); + String password = ""; + try { + List dictionary = Files.readAllLines(Paths.get("/usr/share/dict/words")); + + int randomIndex; + String randomWord; + for (int i = 0; i < count; i++) { + randomIndex = random.nextInt(dictionary.size()); + randomWord = dictionary.get(randomIndex); + password = password + randomWord; + password = password + " "; + } + } catch (IOException e) { + e.printStackTrace(); + System.out.println("An error occured while reading /usr/share/dict/words - Is the file present?"); + System.exit(2); + } + return password; + } + +}