一 点睛

该伪随机数生成器,用于密码软件PGP中。

二 伪随机数生成器的步骤

1 初始化内部状态

2 将当前时间加密生成掩码。

3 对内部状态与掩码求XOR。

4 将步骤3的结果进行加密。

5 将步骤4的结果作为伪随机数输出。

6 对步骤4的结果与掩码求XOR。

7 将步骤6的结果加密。

8 将步骤7的结果作为新的内部状态。

9 重复步骤2~8直到得到所需数量的伪随机。

三 攻击性分析

在步骤2中,我们将当前时间进行加密生成了一个掩码。当前时间是可以被攻击者预测出来的,但是由于攻击者不知道加密密钥,因此他无法预测加密后的当前时间(掩码)。

在之后的步骤3和步骤6中,我们将使用掩码对比特序列进行随机翻转。

步骤3~5的作用是输出伪随机数。这里输出的伪随机数是将内部状态与掩码的XOR进行加密之后的结果。那么,攻击者是否能通过伪随机进行反算来看穿内部状态与掩码的XOR呢?不能,因为要看穿这个值,攻击者必须要破解密码。因此,根据过去输出的伪随机数列,攻击者无法推测出伪随机生成器的内部状态。

步骤6~8的作用是更新内部状态。新的内部状态是将上一个伪随机数与掩码的的XOR进行加密之后的结果。那么,攻击者是否能够从伪随机数推测出新的内部状态呢?不能,因为要算出新的内部状态,只知道上一个伪随机数是不够的,还必须知道掩码以及加密的密钥才行。

通过分析上述步骤,可以发现,在这种伪随机数生成器中,密码的使用保证了无法根据输出的伪随机数列来推测出内部状态。换言之,伪随机数生成器的内部状态是通过密码进行保护的。

四 伪代码

伪随机生成器具体实现——ANSI X9.17相关推荐

  1. 伪随机生成器具体实现——杂乱的方法

    一 点睛 具体的伪随机生成器有下面几种 杂乱的方法 线性同余法 单向散列函数 密码法 ANSI X9.17 二 杂乱的方法--这种方法不可取 可能有人会说,既然是要生成杂乱无章的数列,那么用杂乱无章的 ...

  2. 现代密码学3.3--伪随机生成器/PRG

    现代密码学3.3--伪随机生成器/PRG PRG 归约证明 基于PRG构造计算安全(唯密文攻击)的密码方案 构造密码方案Π\PiΠ 基于PRG,证明密码方案Π\PiΠ的计算安全 博主正在学习INTRO ...

  3. 伪随机函数 密码学_密码学与理论2:什么是伪随机

    伪随机函数 密码学 正如本系列第一部分所得出的结论,没有随机性的安全性是不可能的. 确定性密码无法抵御强大的攻击者, 真正的随机数生成器不切实际或难以获得,因此加密技术基于伪随机数生成器. 这篇文章的 ...

  4. 如何理解“伪随机”以及“随机种子”

    "真随机"与"伪随机" 真随机:就是我们传统意义上理解的"随机",随机事件如今天是否下雨,抛硬币的正反面,家门口的十字路口今天发生车祸等等. ...

  5. 密码学与理论2:什么是伪随机

    正如本系列第一部分所得出的结论,没有随机性的安全性是不可能的. 确定性密码无法抵御强大的攻击者, 真正的随机数生成器不切实际或难以获得,因此加密技术基于伪随机数生成器. 这篇文章的前两章定义它们是什么 ...

  6. 加密生成指定长度_3分钟短文 | PHP伪随机Token生成器,实地测试,效果感人!

    引言 我们经常可能会用到邀请码,邮件验证码,或者需要使用unique 字符串标记用户属性的情况. 今天我们且不说高深的"全局唯一ID"的生成方案,我们说一个简单的,如何生成一个唯一 ...

  7. theboboy原创 随机生成器 生成伪数据 用来做测试 Java版本

    package com.theboboy.javase.util; import java.text.ParseException;import java.text.SimpleDateFormat; ...

  8. theboboy原创 随机生成器 生成伪数据 用来做测试 C#.Net版本

    using System; using System.Collections.Generic; using System.Linq; using System.Text;namespace thebo ...

  9. 基本绘图、随机生成器、字体

    文章目录 官网链接 常用的画图函数 线段 椭圆 矩形 圆 箭头 填充多边形 字体相关函数 写字 得到字符串宽度和高度 随机数生成器:cv:: RNG 构造函数 得到随机数 填充特定分布的数据到矩阵 官 ...

  10. Java篇 - 随机数的原理、伪随机和优化

    这篇来说说Java中的随机数,以及为什么说随机数是伪随机. 目录: Math.random() Random类 伪随机 如何优化随机 封装的一个随机处理工具类 1. Math.random() 1.1 ...

最新文章

  1. 如何正确应用推荐系统!
  2. Golang的interface实践
  3. 单机编程c语言,完美的8051单机C语言编程模板.doc
  4. Caffe部署中的几个train-test-solver-prototxt-deploy等说明二
  5. cnn之将原始图像转换成矩阵
  6. [USACO07FEB]银牛派对Silver Cow Party---最短路模板题
  7. Oracle应用集群详解
  8. 读取文件卡顿_CPU占用100%,电脑卡顿原来可以这样解决!多任务操作也运行如飞...
  9. 利用file权限读取/etc/passwd
  10. Deklarit3.0的确不错,推荐一下。
  11. vbyone接口引脚定义_USB3.1 Type-C 高速接口设计指南
  12. STM32程序下载的三种方式
  13. VUE调用高德地图之热力图
  14. edp接口规范_EDP接口是什么接口?EDP是什么的缩写?
  15. vb.net 生成随机数
  16. 瑞萨e2studio(6)----编译调试
  17. python中\r 的意义
  18. 量子计算机人类意识云,我们的大脑很可能就是一台高度发达的量子计算机
  19. 微店小程序、微店系统怎么开发,流程步骤_OctShop
  20. 计算机上如何配置扫描设置,在 MF Toolbox 中配置扫描设置

热门文章

  1. 7-3 前序序列创建二叉树 (25 分) PTA
  2. 企业级大数据智能分析平台 -- DataA
  3. 微信公众平台接口测试账号申请
  4. 【细胞分割】基于中值滤波+分水岭法实现细胞计数matlab源码
  5. Safe3 Web漏洞扫描系统 6.1修正版(蜘蛛爬行)
  6. 10、Linux上常见软件的安装:安装JDK、安装Tomcat、安装Eclipse
  7. qstring如何初始化_qstringlist 初始化
  8. 步进电机驱动技术1:基于TMC2660的步进电机驱动
  9. 动态调试|Maccms SQL 注入分析(附注入盲注脚本)
  10. python 中sg表示什么_十分钟带你入门最Python风格的Gui库