首页 > 试题广场 >

设备用随机数作为初始化认证用途时,利用当前时间做种子 sra

[单选题]
设备用随机数作为初始化认证用途时,利用当前时间做种子 srand(time(0)) 的 rand() 存在什么风险
  • IoT 设备的初始化时间可预测
  • 耗费系统资源,计算较慢
  • 无法生成随机数
  • 特定时间会导致缓冲区溢出漏洞
  1. time(0):time函数是C和C++中的一个标准库函数,它用于获取当前的系统时间。当传递参数为0时,time(0)返回从1970年1月1日午夜(通常称为UNIX纪元)开始的秒数。

  2. srand:srand是C和C++中的另一个标准库函数,用于设置伪随机数生成器的种子。伪随机数生成器根据种子生成伪随机数序列,因此如果种子相同,生成的随机数序列也将相同。

因此,srand(time(0))的作用是以当前系统时间作为种子,从而使随机数生成器的输出变得不可预测。每次程序运行时,种子都不同,因此生成的随机数序列也不同,从而增加了生成的伪随机数的随机性。这通常用于在编程中模拟随机性,例如在游戏中生成随机数或在密码学中生成随机密钥。请注意,这种方法生成的随机数仍然是伪随机数,不适合用于加密或安全应用。

发表于 2023-09-11 15:23:32 回复(0)