`

有趣的/dev/random和/dev/urandom

 
阅读更多

一、介绍
/dev/random和/dev/urandom是Linux系统中提供的随机伪设备,这两个设备的任务,是提供永不为空的随机字节数据流。很多解密程序与安全应用程序(如SSH Keys,SSL Keys等)需要它们提供的随机数据流。

二、区别
这两个设备的差异在于:/dev/random的random依赖于系统中断,因此在系统的中断数不足时,/dev/random设备会一直封锁,尝试读取的进程就会进入等待状态,直到系统的中断数充分够用, /dev/random设备可以保证数据的随机性。
/dev/urandom不依赖系统的中断,也就不会造成进程忙等待,但是数据的随机性也不高。

三、使用方式
字符设备文件的打开方式和其它文件一样,都是使用open函数打开设备,然后从文件描述符中获取数据即可。



#include<stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

int main()
{
    int fd=0;
    char *buff=NULL;
    unsigned long ulTest = 0;

    fd=open("/dev/urandom",O_RDONLY);

    read(fd,&ulSeed,sizeof(ulTest));
    printf("%ul",ulTest);

    close(fd);
}


编译之后执行即可。
分享到:
评论

相关推荐

    dev-random-as-a-service:devrandom 即服务

    使用非阻塞/dev/urandom ,或在使用/dev/random之前检查。 curl "http://dev-random-as-a-service.appspot.com/proc/sys/kernel/random/entropy_avail" 新增内容:对于我们的实验性/dev/full 、 /de

    docker-mediatomb:一个用于运行Mediatomb的Docker容器

    $ sudo docker run --rm --net= " host " -v /dev/urandom:/dev/urandom -v /dev/random:/dev/random -p 50500:50500 chimeracoder/mediatomb 当然,您将需要挂载包含您要共享的媒体的目录。 例如: $ sudo docker ...

    详解Linux如何生成随机数字和字符串

    3.使用/dev/random 或 /dev/urandom /dev/random存储着系统当前运行环境的实时数据,是阻塞的随机数发生器,读取有时需要等待,尽量避免使用。 /dev/urandom非阻塞随机数发生器,读取操作不会产生阻塞。 &gt; cat /...

    libshamir:GF(256) 中 Shamir's Secret Sharing 的实现,强调简单性和可读性

    建造libshamir 需要 C99 编译器、工具链和类 Unix 公开/dev/urandom 、 /dev/arandom或dev/random 。 git clone ...

    just-use:只需使用devurandom-现在在早期启动时具有更高的安全性

    刚刚使用因为您应该只使用/dev/... 您也可以使用它来替换/dev/random 。 用法: $ make$ sudo insmod justuse.ko$ DEVICE_NUMBER= $( grep " justuse " /proc/devices | awk ' {print $1} ' )$ sudo mknod /dev/u

    Shell创建用户并生成随机密码脚本分享

    /dev/urandom 在Linux中有一个设备/dev/urandom是用来产生随机数序列的。利用该设备我们可以根据在需要生成随机字符串。 比如我们要产生一个8位的字母和数字混合的随机密码,可以这样: 代码如下: [linux@test /tmp...

    开源项目-ammario-frandom.zip

    开源项目-ammario-frandom.zip,frandom - Fast random. ~40x faster than /dev/urandom

    frandom-开源

    frandom 是一个 Linux 内核模块,它实现了快速随机数生成器 (RNG)。 它是 /dev/frandom 的字符驱动程序,像 /dev/urandom 一样工作,仅快 10-50 倍(取决于平台)

    著名的TomCrypt加密解密函数库

    支持 /dev/random, /dev/urandom 以及 Win32 CSP RNG Fortuna SOBER-128 公钥算法 RSA (using PKCS #1 v2.1) ECC (EC-DSA X9.62 数字签名标准, X9.63 EC-DH,密钥交换标准) Rinick添加了一个ECC加密和解密的...

    centos7-tomcat启动慢的解决办法

    centos7 tomcat8.0启动慢的解决办法: 主要原因是生成随机数的时候卡住了,导致tomcat启动不了。 经过检查,发现原因是...securerandom.source=file:/dev/random 改为 securerandom.source=file:/dev/urandom 2.yum ins

    randpass:在命令行上生成随机密码

    选项: -v 显示版本号-h 显示帮助文本-a 将密码限制为字母数字字符-n 指定密码的字符数-r 强制使用 rand() 调用,而不是使用 /dev/random 或 /dev/urandom。 主要用于测试。 -m 生成随机 MAC 地址,例如 d2:85:e6:...

    hs-crypto-random:已弃用 - 使用cryptonite - 加密随机类和熵收集器,具有安全 API for haskell

    unix 系统上的 /dev/random 和 /dev/urandom。 熵源是模块化的,非常欢迎支持其他硬件随机生成器的贡献。 默认安全 通过让随机生成器始终可用的熵池,我们可以安全地且不必给用户带来安全细节的负担,在需要时随时...

    shell脚本实现随机生成10个8位密码

    A=`head -c 500 /dev/urandom | tr -dc a-zA-Z | tr [a-z] [A-Z]|head -c 1` B=`head -c 500 /dev/urandom | tr -dc a-z0-9A-Z | head -c 6` C=`echo $RANDOM|cut -c 2` echo $A$B$C done -------------------------...

    keyed:Linux熵拦截

    换句话说,您可以强制/dev/random , /dev/urandom和getrandom(2)生成特定目标进程的确定性输出。 一个主要用途是即使对于不支持此功能的程序,也强制从密码短语生成密钥。 需要x86-64 Linux。 用法 键控运行带有...

    random-bytes-readable-stream:使用`crypto.randomBytes()`创建一个可读流,以产生具有加密强度的伪随机数据。

    随机字节可读流创建一个使用生成具有加密强度的伪随机数据就像跨平台的fs.createReadStream('/dev/urandom') 。安装 $ npm install random-bytes-readable-stream用法 const randomBytesReadableStream = require ( ...

    libtomcrypt-1.17

    Support for /dev/random, /dev/urandom and the Win32 CSP RNG Fortuna SOBER-128 Public Key Algorithms RSA (using PKCS #1 v1.5 and v2.1) ECC (EC-DSA X9.62 signatures, X9.63 EC-DH) With fast Fixed ...

    快速解决Tomcat启动慢的问题,超简单

    -Djava.security.egd=file:/dev/urandom 2019年02月12日补充:很多朋友想知道原理,我就简单说明一下。 Tomcat 7和Tomcat 8在启动的时候会调用org.apache.catalina.util.SessionIdGeneratorBase....

    Python实现测试磁盘性能的方法

    create 300000 files (512B to 1536B) with data from /dev/urandom rewrite 30000 random files and change the size read 30000 sequential files read 30000 random files delete all files sync and drop cache ...

    Linux Shell里面生成随机数的一些思路分析

    1.使用时间相关的随机数 利用data命令生成输出unixtimestamp(%s)和当前时间的纳秒数据(%N,精确到亿分之一秒...head -10 /dev/urandom | cksum 注意这里千万不要使用cat去获取 这个是一条没有尽头的路 获取1行和10行没

    random-password-async

    随机密码异步一个简单的异步随机密码生成器,在Linux上使用/ dev / urandom。安装npm install random-password-async 用法const randomPassword = require('random-password-async');const getPasswords = async () ...

Global site tag (gtag.js) - Google Analytics