博客
关于我
伪随机生成器具体实现——线性同余法
阅读量: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/

    你可能感兴趣的文章
    perl输出中文有乱码
    查看>>
    Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password). 大数据ssh权限问题 hadoop起不来 hadoopssh错
    查看>>
    PermissionError:Python 中的 [Errno 13]
    查看>>
    PermissionError:[Errno 13] 权限被拒绝:‘/manage.py‘
    查看>>
    Permutation
    查看>>
    return torch._C._broadcast_coalesced(tensors, devices, buffer_size)RuntimeError: NCCL Error 2:unhand
    查看>>
    perspective意思_2020年12月英语四级词汇讲解丨考点归纳:perspective
    查看>>
    PE启动盘和U启动盘(第三十六课)
    查看>>
    PE文件,节头有感IMAGE_SECTION_HEADER
    查看>>
    PE查找文件偏移地址
    查看>>
    PE知识复习之PE的导入表
    查看>>
    pfsense关闭nat
    查看>>
    PFX(Parallel Framework) and Traditional Multithreading
    查看>>
    PGOS:今天动手给电脑装青苹果Win7 X64位系统
    查看>>
    pgpool-II3.1 的内存泄漏(一)
    查看>>
    PgSQL · 特性分析 · PG主备流复制机制
    查看>>
    PGSQL主键序列
    查看>>
    PGSQL安装PostGIS扩展模块
    查看>>
    pg数据库中两个字段相除
    查看>>
    PhalApi:[1.23] 请求和响应:GET和POST两者皆可得及超越JSON格式返回
    查看>>