一种软件生成真随机数算法的设计和实现(一)

上传人:小** 文档编号:54421250 上传时间:2018-09-12 格式:DOC 页数:2 大小:48.52KB
返回 下载 相关 举报
一种软件生成真随机数算法的设计和实现(一)_第1页
第1页 / 共2页
一种软件生成真随机数算法的设计和实现(一)_第2页
第2页 / 共2页
亲,该文档总共2页,全部预览完了,如果喜欢就下载吧!
资源描述

《一种软件生成真随机数算法的设计和实现(一)》由会员分享,可在线阅读,更多相关《一种软件生成真随机数算法的设计和实现(一)(2页珍藏版)》请在金锄头文库上搜索。

1、 一种软件生成真随机数算法的设计和实现 (1) 摘 要 本文提出了一种在软件上实现真随机数的方法,该方法根据 计算机上的一些随机性事件,来生成一个由 0 和 1 组成的随机序列, 然后对 01 序列进行进一步的随机处理,以进一步增强其随机性;根 据这个 01 序列来生成所需要的随机数。基于这种设计方法,本文根 据鼠标在计算机屏幕上的随机曲线来生成 01 序列,然后使用线性同 余法对其进行进一步处理。关键词 真随机数;伪随机数;线性同余法;二元序列 1 引言随机数在信息安全领域有着广泛的应用,比如各种安全认证协议, 一次安全通信中使用到的会晤密钥,甚至软件产生 RSA 密钥对等, 这些应用都会使

2、用到随机数。特别是一些安全级别要求比较高的应 用,对于随机数的质量提出了很高的要求。随机数的生成一般有两 种方式,一种是硬件方式,一种是软件方式。一般情况下,硬件方 式生成的随机数质量要好于软件方式生成的随机数。但是对于一般 的用户来说,需要每位用户都配备一种硬件设备来生成随机数,这 种方式可能不太现实。因此,通过软件方式来寻找高质量的随机数, 这是一个很重要而且必要的课题。 2 基础知识在密码学中,对于一个随机序列的定义如下:(1) 看起来是随机的。(2) 这个序列是不可预测的。(3) 这个序列是不能重复产生的。随机数生成器有真随机和伪随机之分。真随机数生成器满足以上所 有的三点要求,伪随机

3、数生成器只能满足以上的前两点要求。软件生成随机数的一般方式如下:(1) 确定一个数学模型或者算法。(2) 设置一些参数的值。(3) 按照规定的步骤和算法来生成第一个随机数。 对于进一步的组合处理,我们要慎重的选择。如果选择的好,可以 进一步的增加序列的随机性,从而可以降低对原始随机数序列采集 的要求。但是,特别值得注意的是,如果选择的组合算法存在缺陷, 反而有可能降低原始随机数序列的随机性。极端的情况是,比如组 合算法生成的结果都是 0 组成的序列。 4 具体实现我们选择这样的一种随机事件,当用户拿着鼠标在计算机屏幕上随意滑动时,鼠标滑动的轨迹组成的一条曲线是随机的。也就是说, 即使同一个用户

4、也不可能划出这样一条完全一致的曲线。这种方式 很类似于我们投掷硬币的方式。就像古希腊一位哲人所说,人生不 可能两次踏入同一条河流。基于上述的随机事件的选择,我们在一定的时间内对这条曲线进行 时间的抽样。如果要求生成 N bit 的 01 序列,那么我们就对这段曲 线进行时间间隔为 1/N 的取样。这样,我们就会得到 N 个取样点, 每个取样点用其在计算机屏幕上的坐标来表示。接着对每个取样点 的横坐标和纵坐标进行相加,取不大于坐标和的最大整数。如果得 到的整数是偶数,那么这个取样点就表示为 0;如果得到的整数是 奇数,那么这个取样点就表示为 1。这样,我们最后得到了由 0 和 1 组成的随机数序列。假设,我们得到的随机数序列可以表示为:Seed i,其中(i=0,1,N-1)然后,我们对得到的随机数序列进行进一步的处理,组成组合随机 数生成器,从而进一步增强序列的随机性。我们使用线性同余法对原始随机数序列进行进一步处理,从而得到 新的组合随机数序列。我们使用线性同余法得到 N 个位于0,N-1 之间的随机数,它可以表示为:A j,其中(j=0,1,N-1),( A j的取值在0,N-1).数组 A j的含义如下:数组下标 j 表示组合后的随机数序列的第 j 个位置,数组的值 A j表示组合后的随机数序列第 j 个位置的值从 原始随机数序列 Seed 中 A j位置取值。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号