gpt4 book ai didi

java - SecureRandom 生成不同长度的值

转载 作者:行者123 更新时间:2023-11-29 07:55:36 24 4
gpt4 key购买 nike

我有一个需要加盐密码的应用程序。为了生成盐,我决定使用 SecureRandom。当我在我的 Windows 机器上时,一切都很好。然后我尝试在基于 Linux 的机器 (Centos 5) 上运行我的代码,但一切都崩溃了。

我隔离了问题并创建了这个测试用例:

public static void main(String[] args)  {
SecureRandom sr = new SecureRandom();
byte[] saltBytes = new byte[256];
sr.nextBytes(saltBytes);
String salt = new String(saltBytes);
System.out.println(salt.length());
}

在 Windows 中,输出始终为 256,但在我的 Linux 机器上,输出发生变化并且永远不会是 256。它似乎总是生成长度小于 256 的盐。

有人知道为什么会这样吗?

解决方法:

我刚刚将 new String 行更改为 new String(saltbytes, "ASCII");

最佳答案

问题是字符编码。在 linux 上通常是 utf-8,这是一种可变长度编码。如果您需要字符串,请改用 base64。

关于java - SecureRandom 生成不同长度的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18004221/

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