博客
关于我
伪随机生成器具体实现——线性同余法
阅读量:177 次
发布时间:2019-02-28

本文共 718 字,大约阅读时间需要 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为例:

    • R0 = (3×6 + 0) mod 7 = 4
    • R1 = (3×4 + 0) mod 7 = 5
    • R2 = (3×5 + 0) mod 7 = 1
    • R3 = (3×1 + 0) mod 7 = 3
    • R4 = (3×3 + 0) mod 7 = 2
    • R5 = (3×2 + 0) mod 7 = 6
    • R6 = (3×6 + 0) mod 7 = 4

    生成的伪随机数列为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/

    你可能感兴趣的文章
    oracle从备份归档日志的方法集中回收
    查看>>
    oracle优化器analyzed,Oracle 学习之 性能优化(十三) 索引
    查看>>
    Oracle修改字段类型
    查看>>
    Oracle修改表或者字段的注释
    查看>>
    oracle典型安装失败,安装oracle 10失败
    查看>>
    Oracle内存结构详解(四)--Oracle SGA其他组成部分
    查看>>
    Oracle函数与存储过程和程序包
    查看>>
    Oracle分析函数之LEAD和LAG
    查看>>
    Oracle分组取前n条记录
    查看>>
    Oracle分页sql
    查看>>
    Oracle创建database link(dblink)和同义词(synonym)
    查看>>
    oracle创建数据库的步骤
    查看>>
    Oracle创建用户、角色、授权、建表
    查看>>
    Oracle创建用户与授予表空间与权限
    查看>>
    oracle创建表(并且实现ID自增)
    查看>>
    oracle创建视图与生成唯一编号
    查看>>
    oracle删除重复数据保留第一条记录
    查看>>
    oracle判断空值的函数nvl2,【PL/SQL】 NVL,NVL2,COALESCE 三种空值判断函数
    查看>>
    Oracle发布VirtualBox 7.1稳定版!支持ARM、优化了UI、支持Wayland等
    查看>>
    oracle启动三步
    查看>>