密码学初级教程(九)随机数
随机数的用途
- 生成密钥
- 生成密钥对
- 生成初始化向量(IV)
- 生成你once
- 生成盐
随机数的性质
- 随机性-不存在统计学偏差,是完全杂乱的数列。
- 不可预测性-不能从过去的数列推测出下一个出现的数
- 不可重现性-除非将数列本身保存下来,否则不能重现相同的数列。
随机数的分类
- 弱伪随机数(只具备随机性)
- 强伪随机数(具备不可预测性)
- 真随机数(具备不可重现性)
随机数生成器
通过硬件生成的随机数列,是根据传感器收集的热量、声音的变化等事实上无法预测和重现的自然现象信息来生成的。像这样的硬件设备就是随机数生成器(Random Number Generator,RNG)。
伪随机数生成器
可以生成随机数的软件称为伪随机数生成数(Pseudo Random Number Generator,PRNG),仅靠软件无法生成真随机数。
- 伪随机数生成器的结构
- 伪随机数生成器的内部状态
- 伪随机数生成器的种子
种子是一串随机的比特序列,根据种子就可以生成专属于自己的伪随机数列。
具体的伪随机数生成器
- 杂乱的方法
- 线性同余法
- 单向散列函数法
- 密码法
- ANSI X9.17