随机数的生成
要求
- 随机性:在某种明确定义的统计意义下,数列是随机的。
分布均匀性:序列中的位分布应是均匀的 - 不可预测性:序列后续成员不可预测
策略
- 真随机数生成器(TRNG)
非确定性随即位生成器(NRBG) - 伪随机数生成器(PRNG)
确定性随即位生成器(DRBG)
真随机数生成器(TRNG)
- 使用某种不确定的物理源生成非确定的随机位
- RFC 4086中列出的一些随机源,比如: 物理噪声、键盘打击、鼠标移动、音频、视频输入等
- 这些物理过程本质上是不可预测的,因此TRNG生成的数字序列被认为是真正的随机数
伪随机数生成器(PRNG)
- 使用算法确定性地计算产生随机位
- PRNG取一个固定值(种子)作为输入,并用一个确定性算法生成输出位序列
种子必须是不可预测的,一般由TRNG生成
为什么可以使用TRNG,还要使用PRNG?
若应用为流密码,TRNG不实用
若只需要生成有限数量的伪随机数,通常也是希望使用TRNG做种子,使用PRF(伪随机函数)输出
PRNG算法分类
- 专用算法:为生成伪随机位流而专门设计
- 基于现有密码算法的算法:对称分组密码、哈希函数、消息认证
线性同余生成器(LCG)
但这个算法不经常使用
BBS生成器
本文根据以下链接进行学习
https://www.bilibili.com/video/BV19h4y1S7QG/?spm_id_from=333.999.0.0&vd_source=c2c3c616b3ad1faf44a9f6f30a4dbb03
原文地址:https://blog.csdn.net/m0_72827793/article/details/142986587
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!