- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正计划使用IntRange.random()
(即(0..9999).random()
)在 Kotlin 中生成一个随机的5位代码。重要的是,恶意人员不能预测将要生成的数字的顺序。IntRange.random()
是否确保生成这些数字时存在熵?也就是说,每次调用IntRange.random()
时,种子是如何生成的?是否生成了新种子?
谢谢!
最佳答案
Here,当您使用JDK时,可以找到Kotlin中使用的random的JDK平台特定实现。如您所见,该实现基于ThreadLocalRandom
,根据其文档,该密码在密码上并不安全:
Instances of `ThreadLocalRandom` are not cryptographically
secure. Consider instead using `java.security.SecureRandom` in
security-sensitive applications.
fun IntRange.secureRandom() =
SecureRandom().apply {
nextBytes(ByteArray(20))
}.nextInt((endInclusive + 1) - start) + start
Int
的范围内调用:
(0..10).secureRandom()
SecureRandom
,并且您可能需要考虑对其进行缓存。它正在自我播种(而不是显式播种)以改善熵。
kotlin.random.Random
实例,然后将其传递给
IntRange::random(random: Random)
,这一次是使用重用的
SecureRandom
实例:
class SekureRandom : Random() {
private val secureRandom = SecureRandom().apply {
nextBytes(ByteArray(20))
}
override fun nextBits(bitCount: Int) =
secureRandom.nextInt(bitCount)
}
(0..10).random(SekureRandom())
关于random - IntRange.random()如何在Kotlin中引入熵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54861174/
我有以下类(class): public class Rectangle { public int width, height; public Point start; public
我正计划使用IntRange.random()(即(0..9999).random())在 Kotlin 中生成一个随机的5位代码。重要的是,恶意人员不能预测将要生成的数字的顺序。 IntRange.
我正在使用 until下面我的循环中缀乐趣 for (x in 0 until bodies.size) bodies[x]() 在使用 YourKit 分析我的代码时,我注意到我有大量的 IntRa
我想我有一些有趣的期望...我想迭代从 1 到 10 的数字。作为一个 while 循环,它是这样的: def countMe = 1 while (countMe<11) { println c
这个问题在这里已经有了答案: In Kotlin, what's the difference between start and first? (1 个回答) 1年前关闭。 以下代码生成 lint
我想使用 Streams.intRange(int start, int end, int step) 来实现逆序流。但是,java.util.Streams 类似乎不再可用(但它仍在标准库的 rt.
下面是我的代码 import java.util.* fun main() { println("Hello World") dayOfWeek() } fun dayOfWeek()
我正在尝试初始化 IntArray在 Kotlin 中像这样: intArrayOf(1..9) 但我得到了一个 TypeError那个Int是必需的,但我提供了 IntRange .有没有办法用一个
我正在阅读 https://developer.android.com/studio/write/annotations.html 在我的示例中,我使用了注释@NonNull、@IntegerRes
intRange 的密码验证失败。验证是使用 Validator 框架完成的。所需的密码验证工作正常并正确显示消息。但是 intRange 验证失败了。即使密码范围在 4 到 8 之间,也会显示验证消
我一直在想知道如何申请@IntRange(from = 1)到我的 Kotlin 属性(property)。经过几次失败的尝试后,我终于在 Java 中创建了我想要的类,并将其转换为 Android
下面是我的 Kotlin 扩展函数: infix fun Int.send(data: String) { MsgSendUtils.sendStringMsg( this,
我想使用 Range 类,例如 IntRange。根据this link , 它们应该在 org.apache.commons.lang.math.Range 我从 here 下载了 Apache C
我找了又找,还是没找到:当我使用 cv.InRanges 时,我需要放置一个最小和最大 HSV 值。到目前为止,在我看到的所有示例中,它们都对常量使用 Cv.Scalar 我自己尝试使用它,但不知道应
我读了这个article今天在 Android Studio 上支持注解并开始在我的代码中使用这些注解,这里是一个例子: public final static class GoogleMapsZoo
我是一名优秀的程序员,十分优秀!