您的位置:首页 > 其它

生成随机字符串的工具类

2016-06-13 21:43 183 查看

这个类用来生成指定长度的随机字符串

import java.security.SecureRandom;
import java.util.Random;

/**
* Utility that generates a random-value ASCII string.
*
* @author Ryan Heaton
* @author Dave Syer
*/
public class RandomValueStringGenerator {

private static final char[] DEFAULT_CODEC = "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
.toCharArray();

private Random random = new SecureRandom();

private int length;

/**
* Create a generator with the default length (6).
*/
public RandomValueStringGenerator() {
this(6);
}

/**
* Create a generator of random strings of the length provided
*
* @param length the length of the strings generated
*/
public RandomValueStringGenerator(int length) {
this.length = length;
}

public String generate() {
byte[] verifierBytes = new byte[length];
random.nextBytes(verifierBytes);
return getAuthorizationCodeString(verifierBytes);
}

/**
* Convert these random bytes to a verifier string. The length of the byte array can be
* {@link #setLength(int) configured}. The default implementation mods the bytes to fit into the
* ASCII letters 1-9, A-Z, a-z .
*
* @param verifierBytes The bytes.
* @return The string.
*/
protected String getAuthorizationCodeString(byte[] verifierBytes) {
char[] chars = new char[verifierBytes.length];
for (int i = 0; i < verifierBytes.length; i++) {
chars[i] = DEFAULT_CODEC[((verifierBytes[i] & 0xFF) % DEFAULT_CODEC.length)];
}
return new String(chars);
}

/**
* The random value generator used to create token secrets.
*
* @param random The random value generator used to create token secrets.
*/
public void setRandom(Random random) {
this.random = random;
}

/**
* The length of string to generate.
*
* @param length the length to set
*/
public void setLength(int length) {
this.length = length;
}

}

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: