私は次を使用してランダムな文字列を生成しています:
private String generateSafeToken() {
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[512];
random.nextBytes(bytes);
return bytes.toString();
}
これにより、[B@70ffc557
などの長さ11の文字列が得られます。上記のメソッドで指定された長さの文字列を返すようにするにはどうすればよいですか。例えば20文字?
ここで参照されている「重複した」質問が質問に答えないのに、なぜこれが重複としてマークされているのか理解できません。いずれにせよ、私が探していた答えは以下のとおりです。
private String generateSafeToken() {
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[20];
random.nextBytes(bytes);
Encoder encoder = Base64.getUrlEncoder().withoutPadding();
String token = encoder.encodeToString(bytes);
return token;
}
bytes.toString();が間違っている場合は、Arrays.toString(bytes)を使用してみてください。ストリングに変換する場合は、新しいString(bytes)を使用してください。