- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 SecureRandom
在我的 java 项目中生成随机数。但是对于如何为 SecureRandom
保留我的对象,我有点困惑。它应该是一个 static
类成员。我不打算从外面打电话。下面是我当前的实现:
Class MyClass {
private static final SecureRandom secureRandom = new SecureRandom();
private long calculate(int noOfRetry){
final long value = someValueCalculationWith-noOfRetry;
final float randomNo = secureRandom().nextFloat() + 1;
return (long) (value*randomNo);
}
}
这是在 java 中使用 SecureRandom 的正确方法吗?
最佳答案
不,不要让它成为static
。如果您愿意,可以将其设为实例字段,但将其设为类字段并不是最佳选择。例如。请参阅有关派生自 Random
类的线程安全说明:
Instances of
java.util.Random
are threadsafe. However, the concurrent use of the samejava.util.Random
instance across threads may encounter contention and consequent poor performance. Consider instead usingThreadLocalRandom
in multithreaded designs.
请注意,ThreadLocalRandom
不是密码安全的,因此对您来说不是一个好的选择。一般来说,您应该尽量避免使用 static
类字段,尤其是当实例是有状态时。
如果您只需要在一个或几个不在紧密循环中的方法中使用随机实例,那么将其设为本地实例就完全没问题(只需使用 var rng = new SecureRandom()
换句话说,或者甚至只是 new SecureRandom()
如果您有一个需要它的方法调用)。
关于Java SecureRandom 声明应该是特定于静态类的,也可以是特定于实例的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68286343/
我想咨询一些关于 Java 中 SecureRandom 的常见神话、安全与性能权衡的问题。 在网上查了一段时间,整理了以下资料。我希望这里的人能帮助我确认我得到了什么,并希望对实际选择实现的内容有一
我正在尝试使用 SecureRandom 生成随机值,特别是它对流的支持。理想情况下,值应该在恒定的基础上生成,因此流可以是无限的: SecureRandom secureRandom = new S
我想知道 Docker 容器中的随机(或伪随机)序列生成,但遇到了另一个有趣的行为。 直接从 /dev/urandom 读取 8000000 字节并使用 ENT 测试结果时给出以下内容: Entrop
我需要生成加密的安全、随机和唯一字符串,每个字符串都将用作实际上是访问 token 。为此,我计划使用 Java 的 SecureRandom 类。但是,我不确定 SecureRandom 能否保证唯
我有一个使用 SHA1PRNG 的 SecureRandom 生成器: SecureRandom rnd = SecureRandom.getInstance("SHA1PRNG"); 让我们假设这个
我在我的安卓客户端和服务器(Servlet)中得到了一个随机数。我在客户端和服务器中使用相同的 SecureRandom 算法(“SHA1PRNG”)。两者的种子值相同。但是我得到的输出数字在客户端和
我有一个需要加盐密码的应用程序。为了生成盐,我决定使用 SecureRandom。当我在我的 Windows 机器上时,一切都很好。然后我尝试在基于 Linux 的机器 (Centos 5) 上运行我
这是生成密码盐的正确方法吗? SecureRandom random = new SecureRandom(); byte[] salt = random.genera
我正在尝试按照以下方式打乱整数数组, 来自http://en.wikipedia.org/wiki/Fisher-Yates_shuffle , “当 Fisher–Yates shuffle 与伪随
在调查为什么我的 Ubuntu 15 上的 tomcat 8 服务器在启动时没有响应时,事实证明它花费了大量时间来尝试创建 SecureRandom 的实例。为什么会这样以及如何解决? May 19,
我们有一个生成随机临时密码的业务需求。根据用例,此类调用的数量预计非常低(约 400 个调用/天)。根据互联网上的各种建议以及阅读了许多关于 SO 的类似帖子后,我们决定使用 java.securit
尽管在阅读了很多关于 SecureRandom 的文章之后,我还是对 Java 中 SecureRandom 安全 API 的使用产生了疑问。在下面的示例中。 public class SecureR
我找到了很多关于 SecureRandom 的例子看起来像这样的类: Random random = new SecureRandom(); int randomInteger = random.ne
假设你做简单的事情: public class Main { public static void main(String[] args) { long started = S
SecureRandom 线程安全吗?也就是初始化之后,能否依赖对下一个随机数的访问是线程安全的?检查源代码似乎表明它是,this bug report似乎表明它缺乏作为线程安全的文档是一个 java
我正在尝试使用 SecureRandom 在我的 java 项目中生成随机数。但是对于如何为 SecureRandom 保留我的对象,我有点困惑。它应该是一个 static 类成员。我不打算从外面打电
我有一个使用 SecureRandom 实例并获取下一个随机数的类。 让我们说这个例子是: public class ExampleClass() { public void method()
关于SecureRandom,我有些不明白。以这里的代码为例: import java.security.SecureRandom; import java.math.BigInteger; publ
来自 java.util.Random 的 java.security.SecureRandom 种子是否会削弱加密强随机数生成器? 我看到这段代码,想知道为什么要以这种特定的方式完成。 random
在我的群组实体中,我生成一个随 secret 钥,用作“共享代码”:人们可以使用此代码邀请并找到彼此。以下是我的使用方法: public function __construct() { //
我是一名优秀的程序员,十分优秀!