问题标签 [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 投票
3 回答
5491 浏览

java - SecureRandom 的 Android 实现是否产生真正的随机数?

我读过,一般来说,SecureRandom 的某些实现可能会产生真正的随机数

特别是,Android 文档

此类的实例将使用内部熵源生成初始种子,例如/dev/urandom

但这是否意味着它将产生真正的随机数(即,而不是伪随机数)?

如果我SecureRandom以这种方式在Android中使用......

...每当我打电话时,我会得到一个真正随机的输出sr.nextBoolean()吗?

或者,如果我每次都通过这样做来获得输出,那么输出是否可能更多(或更少?)随机: new SecureRandom().nextBoolean()

0 投票
2 回答
1206 浏览

java - 使用 SecRandomCopyBytes 生成范围内的随机数

我正在使用SecRandomCopyBytes生成一个安全的随机数。

有没有办法指定“范围”?

我需要获得这段Java代码的相同行为:

任何提示将不胜感激!

更新

看到我提出了一个愚蠢的问题,我觉得有必要分享解决方案,扩展 Int 类型:

0 投票
3 回答
361 浏览

java - 是否保证 2 次连续调用安全随机数会给出不同的数字?

使用SecureRandom是否可以保证2 个连续调用不会返回相同的数字?
如果这是客户端 API 端的严格要求,那么代码中的以下循环是否多余?

0 投票
7 回答
6791 浏览

java - 生成大量随机数的有效方法

我有一个 java 方法,它必须在很短的时间内生成大量随机数。我的第一种方法是使用 Math.random (它的工作速度非常快),但我有一个假设,因为我Math.random在另一个后面这么快调用,“随机”并不是真正随机的(或不太随机),因此(但我需要它尽可能随机)。

我现在有两个问题:

  1. 我的假设是否正确,因为在很短的时间内调用的数量会减少随机输出的随机性?如果 1. 的答案是肯定的:
  2. 消除随机性较小的问题的最快方法(每次调用)是什么?

我已经玩过SecureRandom,但它至少比普通的 Math.random 慢 15 倍,这对于我的要求来说太慢了。

0 投票
2 回答
452 浏览

java - 静态令牌生成?

我发现了这个问题How to generate a random alpha-numeric string? 答案包含以下代码:

我的问题是我能做到nextSessionId static吗?

我知道从技术上讲我可以,但我很好奇它是否是故意非静态的。我知道作者可能不会阅读我的问题,也不会向我解释他对这个问题的反应是什么,但也许有一些我不知道的事情,有人可以向我解释背后的原因这个答案。我认为使此方法成为非静态方法没有意义,因为我从创建SessionIdentifierGenerator对象中一无所获。我更喜欢在不创建SessionIdentifierGenerator对象的情况下调用 nextSessionId。

0 投票
3 回答
413 浏览

java - 如何在 Java 中创建一定位大小的随机输出?

想创建一个随机的字母数字字符串,其位数始终为 k。大小 k 会比较大(从 128 变化到 2048 或更大)。我正在阅读这个优秀的线程,我正在尝试使用and类来解决问题,但无济于事。RandomSecureRandom

更准确地说,结果不一定是字符串,它可以是任何东西,只要它是随机的并且它的位数始终为 k。

0 投票
3 回答
1002 浏览

java - 为什么使用相同的字符串、密钥和 SecureRandom 的 Java Cipher 加密总是不同?

谢谢大家的意见。

但是,我必须解释这个问题。

我知道我们不应该使用修复随机生成器来比较加密的结果,因为它可能会降低安全性。但是,我只是想在测试中进行,我将在实际运行中使用随机的原始机制

情况是我需要通过以下步骤使用帐户/密码登录服务器:

  1. 从服务器获取信息:abcom/get_cipher.cgi。
  2. 接收响应,解析它并获取一些信息来创建密码。
  3. 使用密码加密帐户/密码,然后编写以下 URL abcom/login.cgi?encrypted={encrypted_account_password}

这是一个复杂的过程,我无法请求服务器更改协议。我想测试整个登录过程。因此,我尝试提供假帐户/密码,并在不解密结果的情况下检查生成的 url 是否正确(如果解密结果,则意味着在这个测试用例中,我需要解密加密的结果,解析 url,并提取相关信息,与测试无关的信息太多了。另外,如果我在登录过程中做一些改变,我可能需要修改测试用例中的解密和解析过程。)

这意味着哈希函数不适合我。(原来的登录过程没有使用任何哈希,所以我不想在测试用例中对其进行测试。而且,即使我检查了哈希结果是正确的,也不能证明登录过程是正确的。)

===原来的问题如下===

我有一个需要登录的程序。为了避免在网络上以纯文本形式传输密码,我需要对其进行加密。换句话说,登录过程包含一个加密阶段。

然后,我想为整个登录过程编写一个测试用例。如果使用相同的帐户和密码,我认为加密结果是相同的。

由于它可能在加密过程中使用 SecureRandom,我用 Mockito 编写了一个假的 SecureRandom,代码如下:

generateRandomWithFixSeed()将使用相同的密钥新建一个随机数,以便生成相同的结果。generateSecureRandomWithFixSeed()使用Makito 检测函数调用 nextBytes() 并始终回答随机结果。测试test_SecureRandom_WithFixSeed()还显示两个不同的 SecureRandom 实例生成相同的结果。

但是,如果我在密码中使用 generateSecureRandomWithFixSeed() 如下,它不能总是返回相同的结果。

0 投票
1 回答
2443 浏览

ruby-on-rails - 如何使用 SecureRandom.urlsafe_base64?

我对此真的很陌生,需要创建一个 2 到 20 个字符之间的 url 安全令牌,并且只允许使用字母数字字符(字母和数字)。我使用此令牌由支付提供商进行处理。

我有下面的方法,但我得到一个错误,令牌无效。如何重写该方法,使其仍然是 url 安全的,但不超过 20 个字符并且只使用字母数字字符?

0 投票
2 回答
100 浏览

java - 生成特定范围内的随机数

我正在尝试n在我的 Android 代码中生成 0-31 之间的随机数。下面是我正在使用的代码:

indices_length是我需要的随机数的数量。通常是 6,7 或 9。但是当我打印生成的数组时,我通常最终会看到重复。有人可以指出我犯的错误。我添加了以下代码行以过滤掉随机重复项:

提前致谢!

0 投票
1 回答
93 浏览

ruby - 需要'赛璐珞'需要很长时间才能加载

我在 Google 计算引擎上部署了一个 JRuby 应用程序。我注意到加载celluloidgem 需要一段时间。在查看了更多细节后,我发现加载celluloid/internals/stack.

通常,它需要超过 2 分钟。一旦加载它甚至需要大约 41 分钟。该服务器具有良好的配置,具有 15Gb RAM 和 4 个内核。

JAVA版

JRUBY版

在此处输入图像描述


当我尝试使用 ruby​​ 时,它会celluloid快速加载。