Skip to content

Instantly share code, notes, and snippets.

@ajaimesv
Created June 21, 2017 12:47
Show Gist options
  • Select an option

  • Save ajaimesv/dd4f6495cd7fc9a40771e55ca53bebd9 to your computer and use it in GitHub Desktop.

Select an option

Save ajaimesv/dd4f6495cd7fc9a40771e55ca53bebd9 to your computer and use it in GitHub Desktop.
Random String Generator
/*
* Copyright (c) 2017 Andres Jaimes http://andres.jaimes.net
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
* SOFTWARE.
*/
public class RandomStringGenerator {
private static final String UPPER_CASE = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
private static final String LOWER_CASE = "abcdefghijklmnopqrstuvwxyz";
private static final String NUMBERS = "0123456789";
private static final String SPECIAL = "!@#$%&+-*/^";
private static final SecureRandom RAND = new SecureRandom();
private RandomStringGenerator() {}
public static String random(int length, boolean lowercase, boolean uppercase,
boolean numbers, boolean special) {
StringBuilder sb = new StringBuilder(length);
String source = "";
if (uppercase) source += UPPER_CASE;
if (lowercase) source += LOWER_CASE;
if (numbers) source += NUMBERS;
if (special) source += SPECIAL;
for(int i = 0; i < length; i++) {
sb.append(source.charAt(RAND.nextInt(source.length())));
}
return sb.toString();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment