2

私は人々が私に頼んだプロジェクトに取り組んでいますgenerate random String of 3000 bytes

できますか?3000バイトのランダムな文字列を生成する方法がわかりませんか?

私はこのようなことを知っています-

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

しかし、そうではありません3000 bytes

のランダムな文字列を取得する方法はありますか3000 bytes

4

1 に答える 1

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エンコードを使用する場合は、問題ありません。

于 2013-02-12T23:21:08.193 に答える