stpeace的专栏

接纳自己,提升认知,拥抱不确定性。

利用linux的/dev/urandom文件产生较好的随机数

        很多朋友经常用srand/rand产生随机数, 其实这种随机性并不好, 容易遭受攻击(很多时候, 也满足不了需求)。 在本文中, 我们来简要介绍一下利用linux的/dev/urandom文件产生较好的随机数, 直接上代码吧:

#include <stdio.h>
#include <fcntl.h>

int main()
{
        int randNum = 0;
        int fd = open("/dev/urandom", O_RDONLY);
        if(-1 == fd)
        {
                printf("error\n");
                return 1;
        }

        read(fd, (char *)&randNum, sizeof(int));
        close(fd); // 千千万万不要漏, 我曾漏过, 结果好悲剧
		
		printf("randNum is %d\n", randNum);

        return 0;
}

     结果:

[taoge@localhost learn_c]$ ./a.out 
randNum is -1061686095
[taoge@localhost learn_c]$ ./a.out 
randNum is 1768060870
[taoge@localhost learn_c]$ ./a.out 
randNum is -1313095365
[taoge@localhost learn_c]$ ./a.out 
randNum is -1651791231
[taoge@localhost learn_c]$ ./a.out 
randNum is 932742445
[taoge@localhost learn_c]$ ./a.out 
randNum is 1191576271
[taoge@localhost learn_c]$ 

      除了/dev/urandom还, 实际上还有一个/dev/random, 两者是有一些小区别的, 有兴趣的话, 大家可以在网上搜索并了解一下, 我就不再重复啰嗦了。






阅读更多
版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。 https://blog.csdn.net/stpeace/article/details/45829161
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

利用linux的/dev/urandom文件产生较好的随机数

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭