【发布时间】:2018-02-25 21:56:28
【问题描述】:
我正在生成一个随机字符串:
private String generateSafeToken() {
SecureRandom random = new SecureRandom();
byte bytes[] = new byte[512];
random.nextBytes(bytes);
return bytes.toString();
}
这给出了一个长度为 11 的字符串,例如 [B@70ffc557。如何使上述方法返回指定长度的字符串。例如 20 个字符?
【问题讨论】:
-
您不能将字节转换为这样的字符串。数组的 toString 不是数组内容的字符串表示形式。
SecureRandom按预期返回 512 个字节。 -
@pvg 我正在尝试生成一个令牌并将其保存在 Postgres 数据库中。我试过
new String(bytes),但我收到invalid byte sequence for encoding "UTF8"错误。你能告诉我该怎么做吗? -
您的问题是重复的,请查看重复的问题,或者直接在 google 上“使用安全随机生成字符串令牌”并选择 881123 解决方案之一。
-
不幸的是,stackoverflow 已经成为一些人通过收集 repotation 来证明他们的“知识”的地方,而其中一种好方法是完全超出范围并仅在编辑上下文中解决和处理他人的问题.不要让他们阻止您找到答案!
-
问题是如何使用安全随机生成给定长度的随机字符串?或者如何将任何字节数组编码为文本?两个问题都是重复的。
标签: java secure-random