You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

67 lines
1.7 KiB

  1. import java.security.SecureRandom;
  2. public class PasswordGenerator {
  3. final String lowercaseCharacters = "abcdefghjkmnpqrstuvwxyz";
  4. final String uppercaseCharacters = "ABCDEFGHJKMNPQRSTUVWXYZ";
  5. final String digits = "0123456789";
  6. private int length = 12;
  7. private boolean useUppercase = true;
  8. private boolean useLowercase = true;
  9. private boolean useDigits = true;
  10. public String generateRandomPassword() {
  11. StringBuilder generatedPassword = new StringBuilder();
  12. SecureRandom rand = new SecureRandom();
  13. String characterPool = "";
  14. if (isUseLowercase()) {
  15. characterPool += lowercaseCharacters;
  16. }
  17. if (isUseUppercase()) {
  18. characterPool += uppercaseCharacters;
  19. }
  20. if (isUseDigits()) {
  21. characterPool += digits;
  22. }
  23. for (int generatorPosition = 0; generatorPosition < getLength(); generatorPosition++) {
  24. generatedPassword.append(characterPool.charAt(rand.nextInt(characterPool.length())));
  25. }
  26. return generatedPassword.toString();
  27. }
  28. public boolean isUseUppercase() {
  29. return useUppercase;
  30. }
  31. public void setUseUppercase(boolean useUppercase) {
  32. this.useUppercase = useUppercase;
  33. }
  34. public boolean isUseLowercase() {
  35. return useLowercase;
  36. }
  37. public void setUseLowercase(boolean useLowercase) {
  38. this.useLowercase = useLowercase;
  39. }
  40. public boolean isUseDigits() {
  41. return useDigits;
  42. }
  43. public void setUseDigits(boolean useDigits) {
  44. this.useDigits = useDigits;
  45. }
  46. public int getLength() {
  47. return length;
  48. }
  49. public void setLength(int length) {
  50. this.length = length;
  51. }
  52. }