Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 37 additions & 26 deletions Others/PasswordGen.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,49 @@
* Creates a random password from ASCII letters
* Given password length bounds
*
* @author AKS1996
* @date 2017.10.25
* @author arrnavvv
* @date 18-09-2020
*/
class PasswordGen {
public static void main(String args[]) {
String password = generatePassword(8, 16);
System.out.print("Password: " + password);
}

static String generatePassword(int min_length, int max_length) {
Random random = new Random();

String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String lower = "abcdefghijklmnopqrstuvwxyz";
String numbers = "0123456789";
String specialChars = "!@#$%^&*(){}?";
public class PasswordGenerator {

String allChars = upper + lower + numbers + specialChars;
static String generatePassword(int min_length, int max_length){
String smallAlphabet="abcdefghijklmnopqrstuvwxyz";
String largeAlphabet="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
String digits="1234567890";
String specialCharacters="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";

List<Character> letters = new ArrayList<Character>();
for (char c : allChars.toCharArray())
letters.add(c);
String all = smallAlphabet+largeAlphabet+digits+specialCharacters;
Random random = new Random();
int length = random.nextInt(max_length - min_length) + min_length;

StringBuilder password = new StringBuilder();
password.append((smallAlphabet.charAt(random.nextInt(26)))).
append(largeAlphabet.charAt(random.nextInt(26))).
append(digits.charAt(random.nextInt(10))).
append(specialCharacters.charAt(random.nextInt(31)));

int left = length-4;
StringBuilder remainingPassword = new StringBuilder();
while(left-->0){
remainingPassword.append(all.charAt(random.nextInt(93)));
}
password.append(remainingPassword);

// Inbuilt method to randomly shuffle a elements of a list
Collections.shuffle(letters);
StringBuilder password = new StringBuilder();
ArrayList<Character> list = new ArrayList<>();
for (char c : password.toString().toCharArray())
list.add(c);
Collections.shuffle(list);

// Note that size of the password is also random
for (int i = random.nextInt(max_length - min_length) + min_length; i > 0; --i) {
password .append( letters.get(random.nextInt(letters.size())));
StringBuilder finalPassword = new StringBuilder();
for(int i=0;i<list.size();i++){
finalPassword.append(list.get(i));
}
return finalPassword.toString();
}
public static void main(String[] args) {

return password.toString();
String password = generatePassword(8,16);
System.out.println("Your password is: "+password);
}
}