From ad2dbb1c7cdadf39c1003ffe3080d94742e7abdf Mon Sep 17 00:00:00 2001 From: MaxKey Date: Sun, 1 Aug 2021 23:40:09 +0800 Subject: [PATCH] Update PasswordGen.java --- .../maxkey/crypto/password/PasswordGen.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/maxkey-common/src/main/java/org/maxkey/crypto/password/PasswordGen.java b/maxkey-common/src/main/java/org/maxkey/crypto/password/PasswordGen.java index 3cf03efa..9940363e 100644 --- a/maxkey-common/src/main/java/org/maxkey/crypto/password/PasswordGen.java +++ b/maxkey-common/src/main/java/org/maxkey/crypto/password/PasswordGen.java @@ -17,6 +17,9 @@ package org.maxkey.crypto.password; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Random; /** @@ -69,8 +72,9 @@ public class PasswordGen { password.append(gen(CHAR_UPPERCASE, upperCase)); password.append(gen(CHAR_SPECIAL, special)); password.append(gen(CHAR_DEFAULT, length - lowerCase - upperCase - numbers -special)); + // random generator String by sequence password - return gen(password.toString(), password.length()); + return shuffle(password.toString()); } /** @@ -95,4 +99,22 @@ public class PasswordGen { } return password.toString(); } + + public String shuffle(final String charString) { + StringBuffer password = new StringBuffer(""); + List list = new ArrayList(); + for (int i = 0; i < charString.length(); i++) { + list.add(charString.charAt(i) + ""); + } + + for (int i = 0; i < length / 2; i++) { + Collections.shuffle(list); + } + + for(String chr : list) { + password.append(chr); + } + return password.toString(); + } + }