如何在Java中生成长度为n的SecureRandom字符串?

swd*_*don 12 java secure-random

我使用以下方法生成随机字符串:

private String generateSafeToken() {
    SecureRandom random = new SecureRandom();
    byte bytes[] = new byte[512];
    random.nextBytes(bytes);
    return bytes.toString();
}
Run Code Online (Sandbox Code Playgroud)

这给出了一个长度为11的字符串,例如[B@70ffc557.如何使上面的方法返回指定长度的字符串.例如20个字符?

swd*_*don 21

我不明白为什么这个标记重复,显然这里提到的"重复"问题没有回答问题.在任何情况下,我正在寻找的答案如下,如果它可以帮助其他任何人.

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;
}
Run Code Online (Sandbox Code Playgroud)