linux真随机函数,Linux下的真随机数发生器 产生真随机数

在翻阅Linux内核方面的书时发现了一个获取真随机数的方法。

linux内核将机器的物理硬件产生的噪声等(例如发生的键盘敲击,中断次数,频率,温度等等)放入系统的熵池/dev/random 和/dev/urandom 中放的就是熵池中的部分随机数据,/dev/random 里只放入熵池中达到一定熵值的情况,例如达到比较的高的熵值的情况,那个时候数据最混乱,所以读取/dev/random 中的随机数据时会阻塞(熵池中随机性也就是整体熵值达到一定程度才会在这里面有随机数据),但他的随机性能比/dev/urandom 更好点,/dev/urandom 已经可以满足对加密要求非常高需要随机数的场景了。

[root@test59 ~]# vi random.c

#include

int main( int argc, char** args )

{

unsigned long* seed = malloc( sizeof( unsigned long ) );

FILE* file = fopen("/dev/random", "r");

printf( "%d\n", sizeof( unsigned long ) );

int i;

for( i = 0; i < 9999; ++i)

{

fread( seed, 1, sizeof( unsigned long ), file );

printf( "%lld\n", *seed );

}

return 1;

}

[root@test59 ~]# gcc random.c

[root@test59 ~]# ./a.out

4

19941251665

19270289895

17908196899

19952896273

19796292007

20353450353

21115463529

20863995845

18673226572

18264664191

20194203122

17676988606

18187335585

17527617129

18539147318

17684736786

19253561163

174699918490b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值