生成3000字节的随机字符串

时间:2013-02-12 23:19:53

标签: java string random

我正在开展一个人们要求我generate random String of 3000 bytes的项目。

有可能吗?我很困惑我们如何生成3000字节的随机字符串?

我知道这样的事情 -

SecureRandom srandom = new SecureRandom();
String rand = new BigInteger(176, srandom).toString(32);

但它不会是3000 bytes

有什么方法可以获得3000 bytes

的随机字符串

1 个答案:

答案 0 :(得分:5)

您可以使用SecureRandom的nextBytes()方法:

final SecureRandom srandom = new SecureRandom();
final byte []data = new byte[3000];
srandom.nextBytes(data);

如果您需要随机字符串包含可打印字符,则可以执行以下操作:

public enum StringUtils
{
  INSTANCE;

  private static final String CANDIDATES = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
  private static final int CANDIDATESLEN;

  static
  {
    CANDIDATESLEN = CANDIDATES.length();
  }

  public static String generateRandomString(int length)
  {
    final StringBuffer sb = new StringBuffer(length);
    for (int i = 0; i < length; i++)
    {
      sb.append(CANDIDATES.charAt(RANDOMSOURCE.nextInt(CANDIDATESLEN)));
    }
    return sb.toString();
  }
}

您可以将CANDIDATES字符串更改为您需要的任何内容。请注意,3000个字符并不一定意味着3000字节,因为这取决于您的候选选择和字符编码,但如果您坚持使用上述候选和UTF-8编码,那么您应该没问题。