问题标签 [secure-random]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
822 浏览

java - SecureRandom.getInstance("DRBG") 使用什么实际算法?

Java 9 (JSR 379)引入了JEP 273中指定的 NIST DRBG。然而,NIST 文档SP 800-90Ar1(NIST Special Publication 800-90A Revision 1: Recommendation for Random Number Generation Using Deterministic Random Bit Generators)指定了树机制的总数:

在 800-90Ar1(所有平台)中实现三种 DRBG 机制(Hash_DRBG、HMAC_DRBG、CTR_DRBG)。

但是,尽管您可能期望我们现在可以使用三种方法来创建此类安全随机算法:

  1. SecureRandom.getInstance("Hash_DRBG")
  2. SecureRandom.getInstance("HMAC_DRBG")
  3. SecureRandom.getInstance("CTR_DRBG")

可能有各种配置参数,我们似乎只有一个:

  1. SecureRandom.getInstance("DRBG")

那么开发者如何配置和检测使用了哪一种算法呢?

0 投票
3 回答
1617 浏览

java - 帮助小学生学习乘法的写作程序

编写一个程序,帮助小学生学习乘法。使用 SecureRandom 对象生成两个正的一位整数(您需要查看如何执行此操作)。然后程序应该提示用户一个问题,例如

6乘以7等于多少?然后学生输入答案。接下来,程序检查学生的答案。如果正确,则显示消息“非常好!” 并问另一个乘法问题。如果答案错误,显示消息“No. Please try again.>again.”。并让学生反复尝试相同的问题,直到学生最终答对为止。

应该使用单独的方法来生成每个新问题。此方法应在应用程序开始执行时以及每次用户正确回答问题时调用一次。

我的问题是你必须做一个 if else 语句 == my public static mathQuestion 然后让它输出吗?制作 SecureRandom 后,我不知道该怎么做。我还是 Java 新手。

在多次错过这个问题后,我尝试过做一个 if-else 语句,但它已经在一个方法中完成了。

0 投票
0 回答
188 浏览

java - 从字节数组中删除 NUL 字符

在我的代码示例中,我生成了一个随机字节数组,我必须将其用作密码字段的盐。

当我的字节数组中有一个 NUL 字符时,就会出现问题。我已经找到了一种使用字符串删除此字符的方法,但出于安全原因,我想使用数组而不是字符串来删除此值。

下面是我的解决方案的片段。在此示例中,我删除了 NUL 出现,但可能是替换它们的不错选择。我该如何更换它?谢谢。

0 投票
1 回答
395 浏览

java - SecureRandom 应该用作单例还是应该在每次生成随机数时创建一个新对象?

SecureRandom用来生成随机数。

SecureRandom如果对象是单例或每次生成随机数时都创建一个新对象,那么它对生成的下一个数字的可预测性有什么影响吗?

单身人士:

对比

每次生成随机数的新对象:

这个问题是在阅读了与“线性同余生成器的可预测性”相关的答案后出现的。

0 投票
0 回答
118 浏览

java - SecureRandom 的确定性 RNG

中小企业,我一直在关注 SO 如何在良好熵的帮助下使 SecureRandom (java) 确定性的各种线程,但作为种子的秘密字符串。到目前为止,我得到的最接近的是 bouncycastle 中的 FixedRandom,它扩展了 SecureRandom 并根据“秘密”但长字节 w 熵提供 nextBytes 和 getSeed。

如果有人能指出我如何正确覆盖 SecureRandom 的 setSeed 以便种子是我设置的并且不会从 urandom 或系统操作系统参数中获得任何熵,我将非常感激

我肯定会得到“如果我们使它具有确定性,攻击者可以蛮力”。我的用例不同,我的应用程序中没有数据或信息在 Internet 上传播。

0 投票
0 回答
78 浏览

android - 在某些情况下,Android 中的 SecureRandom 类给出 null

我在 android 中使用 SecureRandom 类来生成 64 字节的加密安全随机值。但是在我们的日志工具中,我们观察到空值是在随机情况下生成的,没有任何模式。任何人都知道为什么会这样。

下面是代码片段

0 投票
0 回答
224 浏览

java - Java SecureRandom 的 HMAC_DRBG 算法:只能在 Java 9 中使用?

我尝试使用 Java 8 运行以下代码:

我得到了ff:

如果公司政策规定我们需要使用 HMAC_DRBG 怎么办?有没有办法在 Java 8 中实现这一点?我听说这只能在 Java 9 中完成。是真的吗?

0 投票
1 回答
157 浏览

java - 具有多个线程的 SecureRandom 流奇怪行为

我正在尝试使用 生成随机值SecureRandom,特别是它对流的支持。理想情况下,值应该在恒定的基础上生成,因此流可以是无限的:

该文档指出SecureRandom对象可以安全地被多个并发线程使用。” 但是,当多个线程从迭代器中检索下一个值时,我在(至少)一个似乎是由于竞争条件导致的线程中出现错误:

当我多次运行代码时,有时会得到另一种异常(NullPointerException)。

如果我限制流并删除操作,行为是相同的distinct()

编辑:

另一方面,如果我避免使用流而只SecureRandom.nextInt()从每个线程调用,则不会像预期的那样观察到竞争条件。

我想知道为什么迭代器会改变行为?特别是该ints()方法的 Javadocs 声明“生成一个伪随机 int 值,就好像它是调用该方法的结果一样nextInt()

PS:我当然可以解决这个问题,但要同步获取下一个值的线程。

0 投票
1 回答
171 浏览

java - 如何使用 SHA-512 在 C# 中使用 SecureRandom 等效类从随机字节创建哈希值

C# 中此 Java 代码的等效代码

0 投票
1 回答
29 浏览

java - 测试超时不适用于挂起的随机数生成器

我写了一个测试来检查RNG是否挂起

但它没有按预期工作:如果RNG挂起测试也挂起,忽略超时。

如何实现?