generatePassword static method
String?
generatePassword(
- bool isNumberActive,
- bool isSpecialCharacherActive,
- bool isUpperCaseActive,
- bool isLowerCaseActive,
- int length,
)
- Info: Generate password.
- Params:
isNumberActive
determines access code will include number 0-9 or not, isSpecialCharacherActive
enables / disables special character, isUpperCaseActive
enables / disables uppercase letters, isLowerCaseActive
enables / disables lowercase letters, length
is access code length.
- Returns: String?
- Notes:
Implementation
static String? generatePassword(
bool isNumberActive,
bool isSpecialCharacherActive,
bool isUpperCaseActive,
bool isLowerCaseActive,
int length) {
try {
//ASCII bounds.
int minUpperLetter = 65;
int maxUpperLetter = 90;
int minLowerLetter = 97;
int maxLowerLetter = 122;
var specialChars = ["!", "#", "\$", "%", "&", "@", "*", "^"];
StringBuffer sb = StringBuffer(); // String builder.
Random rng = Random(); // Random number generator
for (int i = 0; i < length; i++) {
int choice;
choice = rng.nextInt(
4); // Four status available: * Uppercase letter, Lowerccase letter, number, special character
if (choice == 0) // If 0 comes. lower a-z.
{
if (isLowerCaseActive) {
int rangeLower = minLowerLetter +
rng.nextInt((maxLowerLetter - minLowerLetter) + 1);
sb.writeCharCode(rangeLower);
} else {
if (isUpperCaseActive) {
int rangeUpper = minUpperLetter +
rng.nextInt((maxUpperLetter - minUpperLetter) + 1);
sb.writeCharCode(rangeUpper);
continue;
}
if (isNumberActive) {
sb.write(rng.nextInt(10));
continue;
}
if (isSpecialCharacherActive) {
var selectID = rng.nextInt(specialChars.length);
sb.write(specialChars[selectID]);
continue;
}
}
} else if (choice == 1) // 1 comes, upper A-Z.
{
if (isUpperCaseActive) {
int rangeUpper = minUpperLetter +
rng.nextInt((maxUpperLetter - minUpperLetter) + 1);
sb.writeCharCode(rangeUpper);
} else {
if (isLowerCaseActive) {
int rangeLower = minLowerLetter +
rng.nextInt((maxLowerLetter - minLowerLetter) + 1);
sb.writeCharCode(rangeLower);
continue;
}
if (isNumberActive) {
sb.write(rng.nextInt(10));
continue;
}
if (isSpecialCharacherActive) {
var selectID = rng.nextInt(specialChars.length);
sb.write(specialChars[selectID]);
continue;
}
}
} else if (choice == 2) // 2 comes. a number 0-9.
{
if (isNumberActive) {
sb.write(rng.nextInt(10));
} else {
if (isLowerCaseActive) {
int rangeLower = minLowerLetter +
rng.nextInt((maxLowerLetter - minLowerLetter) + 1);
sb.writeCharCode(rangeLower);
continue;
}
if (isSpecialCharacherActive) {
var selectID = rng.nextInt(specialChars.length);
sb.write(specialChars[selectID]);
continue;
}
if (isUpperCaseActive) {
int rangeUpper = minUpperLetter +
rng.nextInt((maxUpperLetter - minUpperLetter) + 1);
sb.writeCharCode(rangeUpper);
continue;
}
}
} else // 3 comes. special characters.
{
if (isSpecialCharacherActive) {
var selectID = rng.nextInt(specialChars.length);
sb.write(specialChars[selectID]);
} else {
if (isUpperCaseActive) {
int rangeUpper = minUpperLetter +
rng.nextInt((maxUpperLetter - minUpperLetter) + 1);
sb.writeCharCode(rangeUpper);
continue;
}
if (isLowerCaseActive) {
int rangeLower = minLowerLetter +
rng.nextInt((maxLowerLetter - minLowerLetter) + 1);
sb.writeCharCode(rangeLower);
continue;
}
if (isNumberActive) {
sb.write(rng.nextInt(10));
continue;
}
}
}
}
return sb.toString();
} catch (e) {
return null;
}
}