import java.util.*;
import java.lang.*;
import java.io.*;
import java.security.SecureRandom;
/**
* @author re
* http://j...content-available-to-author-only...i.al
*/
class Ideone
{
private static final String UPPERCASE_CHARACTERS
= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static final int DEFAULT_PASSWORD_LENGTH = 8;
// default constructor
Ideone() { this(UPPERCASE_CHARACTERS); }
// constructor
Ideone
(String characters
) { this.
charactersToBeUsed = characters
; }
public String generate
() { return generate
(DEFAULT_PASSWORD_LENGTH
); }
public String generate
(int length
) { char[] password = new char[length];
char[] possibleCharacters = charactersToBeUsed.toCharArray();
for (int i = 0; i < length; i++) {
password[i] = possibleCharacters[r.nextInt(possibleCharacters.length)];
}
}
private enum EnumAsciiCharacters {
UPPERCASE( "ABCDEFGHIJKLMNOPQRSTUVWXYZ" ),
LOWERCASE( "abcdefghijklmnopqrstuvwxyz" ),
NUMERIC( "1234567890" ),
SPECIAL( "~!@#$%^&*()_|" );
@Override
return this.characters;
}
private EnumAsciiCharacters
( String characters
) { this.characters = characters;
}
} // EnumAsciiCharacters
{
"%s%s%s",
EnumAsciiCharacters.UPPERCASE, EnumAsciiCharacters.LOWERCASE, EnumAsciiCharacters.SPECIAL
);
Ideone pg = new Ideone(useThisCharacters);
System.
out.
println(pg.
generate()); }
}
aW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbTsKLyoqCiAgKiAgQGF1dGhvciByZQogICogIGh0dHA6Ly9qLi4uY29udGVudC1hdmFpbGFibGUtdG8tYXV0aG9yLW9ubHkuLi5pLmFsCiAgKi8KY2xhc3MgSWRlb25lCnsKCVN0cmluZyBjaGFyYWN0ZXJzVG9CZVVzZWQ7CgogICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVQUEVSQ0FTRV9DSEFSQUNURVJTID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIjsKICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX1BBU1NXT1JEX0xFTkdUSCA9IDg7CgogICAgLy8gZGVmYXVsdCBjb25zdHJ1Y3RvcgogICAgSWRlb25lKCkgeyB0aGlzKFVQUEVSQ0FTRV9DSEFSQUNURVJTKTsgfQogICAgLy8gY29uc3RydWN0b3IKICAgIElkZW9uZShTdHJpbmcgY2hhcmFjdGVycykgeyB0aGlzLmNoYXJhY3RlcnNUb0JlVXNlZCA9IGNoYXJhY3RlcnM7IH0KICAgIAogICAgcHVibGljIFN0cmluZyBnZW5lcmF0ZSgpIHsgcmV0dXJuIGdlbmVyYXRlKERFRkFVTFRfUEFTU1dPUkRfTEVOR1RIKTsgfQoKICAgIHB1YmxpYyBTdHJpbmcgZ2VuZXJhdGUoaW50IGxlbmd0aCkgewogICAgICAgIGNoYXJbXSBwYXNzd29yZCA9IG5ldyBjaGFyW2xlbmd0aF07CgogICAgICAgIGNoYXJbXSBwb3NzaWJsZUNoYXJhY3RlcnMgPSBjaGFyYWN0ZXJzVG9CZVVzZWQudG9DaGFyQXJyYXkoKTsKICAgICAgICBTZWN1cmVSYW5kb20gciA9IG5ldyBTZWN1cmVSYW5kb20oKTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICAgICBwYXNzd29yZFtpXSA9IHBvc3NpYmxlQ2hhcmFjdGVyc1tyLm5leHRJbnQocG9zc2libGVDaGFyYWN0ZXJzLmxlbmd0aCldOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhwYXNzd29yZCk7CiAgICB9CgkKCXByaXZhdGUgZW51bSBFbnVtQXNjaWlDaGFyYWN0ZXJzIHsKCSAgICBVUFBFUkNBU0UoICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIgKSwKCSAgICBMT1dFUkNBU0UoICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIgKSwKCSAgICBOVU1FUklDKCAiMTIzNDU2Nzg5MCIgKSwKCSAgICBTUEVDSUFMKCAifiFAIyQlXiYqKClffCIgKTsKCQoJICAgIHByaXZhdGUgU3RyaW5nIGNoYXJhY3RlcnM7CgkKCSAgICBAT3ZlcnJpZGUKCSAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewoJICAgICAgcmV0dXJuIHRoaXMuY2hhcmFjdGVyczsKCSAgICB9CgkKCSAgICBwcml2YXRlIEVudW1Bc2NpaUNoYXJhY3RlcnMoIFN0cmluZyBjaGFyYWN0ZXJzICkgewoJICAgICAgdGhpcy5jaGFyYWN0ZXJzID0gY2hhcmFjdGVyczsKCSAgICB9Cgl9IC8vIEVudW1Bc2NpaUNoYXJhY3RlcnMKCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgdXNlVGhpc0NoYXJhY3RlcnMgPSAKCQkJU3RyaW5nLmZvcm1hdCgKCQkJCSIlcyVzJXMiLAoJCQkJRW51bUFzY2lpQ2hhcmFjdGVycy5VUFBFUkNBU0UsIEVudW1Bc2NpaUNoYXJhY3RlcnMuTE9XRVJDQVNFLCBFbnVtQXNjaWlDaGFyYWN0ZXJzLlNQRUNJQUwKCQkJKTsKCSAgICBJZGVvbmUgcGcgPSBuZXcgSWRlb25lKHVzZVRoaXNDaGFyYWN0ZXJzKTsKCSAgICBTeXN0ZW0ub3V0LnByaW50bG4ocGcuZ2VuZXJhdGUoKSk7Cgl9Cn0=