我使用以下方法生成随机字符串:
private String generateSafeToken() {
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[512];
random.nextBytes(bytes);
return bytes.toString();
}
这会给出一个长度为11的字符串,例如[B@70ffc557
。如何使上面的方法返回指定长度的字符串。例如20个字符?
答案 0 :(得分:14)
我不明白为什么这个标记重复,显然这里提到的“重复”问题没有回答问题。在任何情况下,我正在寻找的答案都在下面,如果它对其他人有帮助的话。
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;
}
答案 1 :(得分:0)
bytes.toString();是错误的,如果要将其转换为String,请尝试使用Arrays.toString(字节) - 或新的String(字节)。