本文共 725 字,大约阅读时间需要 2 分钟。
线性同余法是一种广泛应用的伪随机数生成器算法。然而,它并不能用于密码技术。
线性同余法用于生成伪随机数列,具体步骤如下:
初始化:使用伪随机数的种子,计算第一个伪随机数R0: [ R0 = (A \times \text{种子} + C) \mod M ] 其中,A、C、M为常量,且A和C需小于M。
递推公式:根据当前伪随机数Rn,计算下一个伪随机数R(n+1): [ R(n+1) = (A \times Rn + C) \mod M ]
以A=3,C=0,M=7,种子为6为例:
生成的伪随机数列为4、5、1、3、2、6,周期为6。
线性同余法的周期性由A和M决定。例如,当A=6,C=0,M=7,种子为6时,伪随机数列为1、6,周期为2。
只有特定的A值(如3和5)才能使周期为6。
线性同余法不具备不可预测性,因此不可用于密码技术。攻击者已知A、C、M和任意一个伪随机数,均可预测后续数列。
例如,已知R0=4,下一个数R1 = (3×4 + 0) mod 7 = 5,依此类推。
线性同余法易于实现,但其周期性和安全性有限,无法满足密码技术要求。尽管许多编程语言库函数(如C语言的rand)采用线性同余法,但这些函数不适合用于加密。
转载地址:http://sorj.baihongyu.com/