标签: secure-random

774
推荐指数
11
解决办法
52万
查看次数

SecureRandom的Android实现是否会生成真正的随机数?

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

特别是,Android文档

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

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

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

SecureRandom sr = new SecureRandom();
Run Code Online (Sandbox Code Playgroud)

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

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

java random android secure-random

14
推荐指数
2
解决办法
3532
查看次数

UUID.randomUUID()vs SecureRandom

我试图理解在SecureRandom生成器上使用UUID.randomUUID()的优点,因为前者在内部使用securerandom.

java uuid secure-random

13
推荐指数
3
解决办法
1万
查看次数

如何在Java中生成长度为n的SecureRandom字符串?

我使用以下方法生成随机字符串:

private String generateSafeToken() {
    SecureRandom random = new SecureRandom();
    byte bytes[] = new byte[512];
    random.nextBytes(bytes);
    return bytes.toString();
}
Run Code Online (Sandbox Code Playgroud)

这给出了一个长度为11的字符串,例如[B@70ffc557.如何使上面的方法返回指定长度的字符串.例如20个字符?

java secure-random

12
推荐指数
1
解决办法
7426
查看次数

SecureNandom提供程序"Crypto"在Android N中不可用,用于确定性地生成密钥

用户可以购买我的应用程序的"专业版".当他们这样做时,我按如下方式存储和验证他们的购买.

  • 合并用户的UUID和另一个唯一字符串.
  • 然后使用静态种子加密生成的字符串.我这样做SecureRandom.getInstance("SHA1PRNG", "Crypto")- 这就是问题!
  • 然后,生成的加密字符串是"解锁代码".
  • 因此,我总是知道用户期望的唯一解锁代码值.
  • 当用户购买"Pro"时,我将"解锁代码"存储在数据库中.
  • 我通过查看数据库中存储的"解锁代码"是否与基于其唯一信息的预期代码匹配来检查用户是否具有"Pro" .

所以,不是最好的系统,但是对于我的简陋应用程序来说,所有内容都是模糊不清的.

问题是SecureRandom.getInstance("SHA1PRNG", "Crypto")在N 上失败,因为不支持"加密".我了解到依赖于特定的提供程序是不好的做法,并且N不支持加密.哎呀.

所以我遇到了一个问题:我依赖于值种子对的加密来始终具有相同的输出.Android N不支持我使用的加密提供程序,因此我不知道如何确保N上的加密输出与其他设备上的加密输出相同.

我的问题:

  1. 是否可以在我的APK中加入"加密"以便它始终可用?
  2. 加密Android N上的值种子对时,我可以确保相同的输出吗?

我的代码:

public static String encrypt(String seed, String cleartext) throws Exception {
    byte[] rawKey = getRawKey(seed.getBytes(), seed);
    byte[] result = encrypt(rawKey, cleartext.getBytes());
    return toHex(result); // "unlock code" which must always be the same for the same seed and clearText accross android versions
}

private static byte[] getRawKey(byte[] seed, …
Run Code Online (Sandbox Code Playgroud)

random android cryptography secure-random android-7.0-nougat

8
推荐指数
2
解决办法
6580
查看次数

创建“良好”SecureRandom 的最佳方法是什么?

有很多问题询问 SecureRandom 的特定启动是否“好”,但我找不到经验法则。

创建“良好”随机 SecureRandom 的最佳方法是什么?

// Fast
// Is it a good random?
SecureRandom secureRandom = new SecureRandom()?

// Freezes for a few seconds after being used several times - until getting a random enough seed.
// See http://stackoverflow.com/questions/137212/how-to-solve-performance-problem-with-java-securerandom#comment68934647_137212
// Is it a good random?
SecureRandom secureRandom = new SecureRandom(SecureRandom.getSeed(20))?

// Freezes for a very long time. Waited minutes and still no return :(
SecureRandom secureRandom = new SecureRandom.getInstanceStrong()?

Other?
Run Code Online (Sandbox Code Playgroud)

java security random-seed java-security secure-random

8
推荐指数
2
解决办法
4297
查看次数

Java:使用DRBG SecureRandom时如何设置随机数?

Java 9引入了一个新的名为DRBG的SecureRandom。我想用它来确定性地生成随机数。问题在于它在内部使用一个随时更改的随机数,因此对于相同的种子,我不会得到相同的数字。它的内部确实有一个选项可以设置该随机数,但是我找不到任何可以完成该操作的公共方法。如何更改该随机数?

java random cryptography secure-random

7
推荐指数
1
解决办法
254
查看次数

SecureRandom 速度过慢或冻结系统

java 应用程序执行如下操作:

\n
SecureRandom random = new SecureRandom();\nfor(int i=0;i<12;i++){\n   random.nextInt(19);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

在 random.nextInt() 处,java 冻结了几分钟,似乎无限期地挂起。
\n奇怪的是,只有当我通过 Jenkins 运行它时,该行为才会出现,并且我 \xe2\x80\x99 无法在本地重现该问题。
\n在生产中代码也运行良好。
\njenkins 代理是 Ubuntu,但是如果我将其更改为 macOS 代理,它可以正常工作。
\n生产运行在 openSUSE 上。
\n这里有什么魔力?

\n

java random freeze jenkins secure-random

6
推荐指数
1
解决办法
2445
查看次数

重用java.util.Random实例与每次创建一个新实例

标题几乎是对它的总结-我们可以创建java.util.Random(或SecureRandom)的一个实例,并在每次需要一个随机值时使用它,也可以在每次需要时创建一个新的实例。想知道哪种方法是首选,为什么?

让我们对上下文有一些了解:随机值是在HTTP请求处理程序内部生成的,每个请求一个,并且我正在考虑多线程的问题,寻求安全性和性能的最佳组合。

java random performance multithreading secure-random

5
推荐指数
1
解决办法
432
查看次数

我应该用种子初始化我的BCryptPasswordEncoder的SecureRandom吗?

我只是对同事任务进行代码审查,并遇到了以下代码行(他正在实现基于Spring Security的登录系统).

@Bean
public PasswordEncoder passwordEncoder(){
    return new BCryptPasswordEncoder(ENCODING_STRENGTH, new SecureRandom(SEED_BYTES));
}
Run Code Online (Sandbox Code Playgroud)

SecureRandom用恒定的种子初始化这个特性是一个好主意吗?我不这么认为,但不能真正解释原因.

java spring-security bcrypt secure-random

4
推荐指数
1
解决办法
1101
查看次数