gpt4 book ai didi

c - 在 C 中为加密目的生成伪随机数的最简单方法是什么?

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:39 25 4
gpt4 key购买 nike

我需要为学生的密码学家庭作业生成随机数。

一开始我想用

srand(time(NULL));
int r = rand();

但我读到不应该将其用于密码学。如果可能的话,我希望编写我自己的伪随机数生成器。

在 C 语言中为加密目的生成伪随机数的最快/最简单的方法是什么?

我在 Linux 上,如果答案不是跨平台的,我不介意。

最佳答案

没有跨平台的解决方案。在 Linux 上,阅读 /dev/urandom (使用 fread ,或者使用 read 如果您喜欢复杂性)。从 /dev/urandom 读取的字节适用于密码学用途,除非来自新启动的嵌入式系统或缺乏熵的服务器。

文档过于保守(源于安全的理论概念,攻击者拥有无限的计算能力,而不仅仅是使用世界上所有的计算机);在大多数情况下,it is perfectly fine to use /dev/urandom to generate cryptographic keys .

如果您需要生成大量随机字节,您可能需要实现一个 pseudo-random number generator在您的代码中,仅使用 /dev/urandom 为它播种熵。如果您只是生成一些 key 和类似的少量 Material ,或者如果您需要生成大量随机数但 /dev/urandom 的速度不是瓶颈,或者如果这是一个学校练习,实现 PRNG 不是练习的重点,那么只需从 /dev/urandom 读取就可以了。

关于c - 在 C 中为加密目的生成伪随机数的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23031507/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com