# linux随机数设备
从系统熵池进行获取

## index
- [random-urandom](# random-urandom)
- [note](# note)

## random-urandom
/dev/random 和 /dev/urandom 的区别
+ /dev/random:
  - 阻塞型设备，当熵池耗尽时会阻塞，直到收集到足够的熵
  - 适合生成高价值的密钥、证书等
  - 可能会影响性能，因为可能需要等待

+ /dev/urandom:
  - 非阻塞型设备，即使熵池耗尽也会继续提供数据
  - 使用加密算法从初始熵生成伪随机数
  - 对于大多数应用来说已经足够安全
  - 推荐在大多数情况下使用

## note
- 对于大多数应用，使用 /dev/urandom 就足够了，它不会阻塞且性能更好
- 只在生成长期加密密钥等极高安全需求时使用 /dev/random
- 不要频繁打开和关闭设备文件，可以保持打开状态或重用文件描述符
- 检查所有系统调用的返回值，确保操作成功
