gpt4 book ai didi

java - 在我的例子中生成随机字符

转载 作者:行者123 更新时间:2023-11-30 11:05:09 25 4
gpt4 key购买 nike

我需要使用 SecureRandom 类生成 random 32 个字符的字符串。我尝试生成 32 字节数组然后使用 Base64 编码:

byte[] bytes = new byte[32];
new SecureRandom().nextBytes(bytes);

new String(Base64.encodeBase64(bytes));

但是这段代码生成了一个超过 32 个字符的字符串。如何在仍然使用 SecureRandom 类的同时获得随机的 32 个字符?

最佳答案

改为尝试编码 22 到 24 个字节。

当对这个数量进行编码时,生成的 Base64 编码字符串应该恰好包含 32 个字符,尽管其中一些可能是 = 标记,这取决于它是 22 字节还是 23 字节由于填充。

如果您不想要= 标记,只需编码24 个字节并且不会添加填充。

如果您对填充或 Base64 编码的工作原理更感兴趣,当前的 wikipedia article很详细。

例如相应地更改您的代码:

byte[] bytes = new byte[24];
new SecureRandom().nextBytes(bytes);

new String(Base64.encodeBase64(bytes)); // Should be 32 characters in length.

关于java - 在我的例子中生成随机字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29744691/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com