在使用Swift 3在Linux中生成随机字符串时,我遇到了两个问题。
arc4random_uniform在Linux中仅在BSD上不可用。因此,我能够通过使用随机()函数而逃脱惩罚。当我生成一个可变大小的随机数时,这种方法起了作用(参见下面的代码)
函数generateRandomNumber() -> Int { var place =1 var finalNumber = 0;#if os(Linux) for _ in 0..<5 { place *= 10 let randomNumber =Int(随机()% 10) +1 finalNumber += rando
苹果的最新安全文件表示,它现在使用CTR_DRBG来生成伪随机数(以前是Yarrow而不是CTR_DRBG),使用“启动时的定时变化”和“启动后中断计时”作为种子。默认情况下,对iOS API SecRandomCopyBytes的调用将从/dev/随机检索随机字节。苹果的随机(4)手册页似乎暗示他们的/dev/随机是非阻塞的,但不知何故,它不需要阻塞来确保新的熵字节:
/dev/urandom与Linux兼容。在Linux上,如果熵池耗尽,/dev/urandom将产生更低质量的输出,而/dev/随机将更倾向于阻塞和等待收集额外的熵。对于Y罗,这种选择和区别是不必要的,这两种设备的行为是相同