linux下的真随机数发生器 产生真随机数

11 篇文章 0 订阅
2 篇文章 1 订阅

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

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

[root@test59 ~]# vi random.c

#include <stdio.h>

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
17469991849

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
随机数发生器(True Random Number Generator,TRNG)是一种能够生成随机数序列的设备或算法,其原理基于物理过程的不确定性。 以下是一种常见的随机数发生器原理: 1. 物理噪声:随机数发生器利用物理过程中的噪声源来获取正的随机性。这些噪声源可以是电子器件中的热噪声、放大器噪声、半导体器件中的随机电子转移等。 2. 随机信号提取:随机数发生器使用一个或多个电路来提取物理噪声并转换为数字信号。例如,可以使用放大器和带通滤波器来放大和过滤噪声信号,以便后续处理。 3. 稳态判定:提取到的噪声信号经过稳态判定电路,用于检测噪声信号是否达到了一种稳定状态。这是为了确保所提取的信号是正随机的,而非由于系统的不稳定性导致的。 4. 随机性测量和提取:通过对稳态噪声信号进行测量和分析,随机数发生器能够获取到一系列正随机的比特。这些比特被称为熵源(Entropy Source)。 5. 噪声处理和转换:从熵源中获得的随机比特可以通过进一步的处理和转换,如哈希函数、采样、混合等,生成可用的随机数序列。这样的处理可以帮助提高生成的随机数的性能和质量。 随机数发生器的关键在于物理过程中的不确定性和噪声源的真实性。通过合理的设计和实现,随机数发生器能够生成具有高质量和不可预测性的随机数,适用于密码学、模拟实验、游戏开发等需要高度随机性的应用领域。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zda天天爱打卡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值