一种伪随机数发生器及伪随机数生成方法

文档序号:32349650发布日期:2022-11-26 12:29阅读:188来源:国知局
一种伪随机数发生器及伪随机数生成方法

1.本发明涉及一种生成方法,具体是一种伪随机数发生器及伪随机数生成方法。


背景技术:

2.随着现今智能设备使用需求的日益增加,人民群众对保护个人隐私数据有着更高的安全要求。密码技术则通常被用于保障相关数据的安全传输,其中信息系统的安全性基石建立在底层密钥的随机性上。因此,高质、高效、高速的伪随机数序列及其生成方法成为具有挑战性和实用性的研究目标,伪随机数发生器在其它方面也有应用,例如在模拟仿真(蒙特卡罗方法),电子游戏(程序参数)等。具体地,在密码学应用中则要求伪随机数序列的输出不能从早期输出中预测而来,同时需要更复杂的生成算法来保障该性质。
3.目前密码学安全的伪随机数发生器:1)基于流密码;2)基于ctr模式分组密码;3)micali-schnorr构造法;4)naor-reingold构造法;5)blum-blum-shub构造法;6)混合构造法;7)基于单向函数。总体而言,多数伪随机数发生器的占用空间较大,效率较低或是安全性较弱,无法满足逐渐步入量子时代的密码学应用对伪随机数各项要求。


技术实现要素:

4.本发明的目的在于提供一种伪随机数发生器及伪随机数生成方法,以解决上述背景技术中提出的问题。
5.为实现上述目的,本发明提供如下技术方案:
6.一种伪随机数发生器及伪随机数生成方法,包括初始化模块、采样模块、计算模块和输出模块,所述初始化模块与采样模块连接,所述采样模块与计算模块连接,所述计算模块与输出模块连接。
7.作为本发明进一步的方案:所述初始化模块用于选取初始化的系统参数,包括一个正整数n,正整数n可取521或607,或其它梅森素数的比特长度,一个正整数h,正整数h用于限定采样模块中基础随机数的汉明重量范围,一串初始随机比特序列r,用于采样模块中的基础随机数生成。
8.作为本发明再进一步的方案:所述采样模块是基于初始化模块中的初始随机比特序列r,采样两个n比特长的基础随机数a和b,后续用于计算模块中的最终随机数生成。
9.作为本发明再进一步的方案:所述计算模块用于将采样模块的结果a和b作为输入参数,在比特长度为n的梅森素数形成的环上计算c=a/b,并把c送入输出模块。
10.作为本发明再进一步的方案:所述输出模块用于将计算模块的结果c从整数转换为二进制数d,并将d由低位至高位依次输出二元比特序列,作为最终的伪随机数序列。
11.作为本发明再进一步的方案:其生成方法步骤如下:
12.步骤一:首先设定伪随机数发生器中使用的梅森素数m(n)以及它的比特长度n,同时设定基础随机数的汉明重量范围相关参数h,同时选定初始的随机比特序列r;
13.步骤二:将r输入采样算法s,采样后得到s(r)-》a,b,a和b是两个n比特长的基础随
机数;
14.步骤三:将a和b输入计算模块中,在m(n)的环上计算c=a/b mod m(n);
15.步骤四:将c数制转换为二进制数d(只包含0和1),随后将d由低位至高位依次输出二元比特序列s,最后生成符合密码学安全的伪随机数序列。
16.作为本发明再进一步的方案:所述步骤二中的采样算法s包括:
17.输入:初始随机比特序列r
18.输出:n比特长的基础随机数a和b
19.步骤一:首先将r分为任意两部分,即r1和r2;
20.步骤二:将r1作为随机种子,应用knuth洗牌算法对数组[1,2,

,n]进行随机置乱得到新数组i;
[0021]
步骤三:取随机置乱数组i的前h个元素,即i(1),i(2),

,i(h);
[0022]
步骤四:对n比特长且汉明重量为0的比特串进行0与1的替换操作,将对应i(1),i(2),

,i(h)位置的0都替换为1;
[0023]
步骤五:新得到的是n比特长且汉明重量为h的比特串,记为a;
[0024]
步骤六:将r2作为随机种子,应用knuth洗牌算法对数组[1,2,

,n]进行随机置乱得到新数组i;
[0025]
步骤七:取随机置乱数组i的前h个元素,即i(1),i(2),

,i(h);
[0026]
步骤八:对n比特长且汉明重量为0的比特串进行0与1的替换操作,将对应i(1),i(2),

,i(h)位置的0都替换为1;
[0027]
步骤九:新得到的是n比特长且汉明重量为h的比特串,记为b;
[0028]
步骤十:返回n比特长的基础随机数a和b。
[0029]
与现有技术相比,本发明的有益效果是:
[0030]
1、以梅森素数困难问题为基础,提出的伪随机数发生器具有抗量子攻击的安全特性;
[0031]
2、以梅森素数为基础,梅森素数是指形如2^p-1的一类素数,其中指数p也是素数,可简记为m(p),包括m(2)、m(3)、m(5)、m(7)、m(13)、m(17)、m(19)、m(31)等;
[0032]
3、伪随机数序列由环上元素之商对应转换的二元比特序列组成;
[0033]
4、计算过程中需要二元比特序列与整数相互之间进行转换;
[0034]
5、本发明提出基于梅森素数困难问题的伪随机数发生器,作为安全基础的梅森素数困难问题,其抗量子攻击安全性可被验证,同时该伪随机数发生器操作较为简洁。
附图说明
[0035]
图1为伪随机数发生器及伪随机数生成方法的方法流程图。
[0036]
图2为伪随机数发生器及伪随机数生成方法的模块图。
具体实施方式
[0037]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0038]
请参阅图1~2,本发明实施例中,一种伪随机数发生器及伪随机数生成方法,包括初始化模块、采样模块、计算模块和输出模块,所述初始化模块与采样模块连接,所述采样模块与计算模块连接,所述计算模块与输出模块连接,所述初始化模块用于选取初始化的系统参数,包括一个正整数n,正整数n可取521或607,或其它梅森素数的比特长度,一个正整数h,正整数h用于限定采样模块中基础随机数的汉明重量范围,一串初始随机比特序列r,用于采样模块中的基础随机数生成;所述采样模块是基于初始化模块中的初始随机比特序列r,采样两个n比特长的基础随机数a和b,后续用于计算模块中的最终随机数生成;所述计算模块用于将采样模块的结果a和b作为输入参数,在比特长度为n的梅森素数形成的环上计算c=a/b,并把c送入输出模块;所述输出模块用于将计算模块的结果c从整数转换为二进制数d,并将d由低位至高位依次输出二元比特序列,作为最终的伪随机数序列;
[0039]
其生成方法步骤如下:
[0040]
步骤一:首先设定伪随机数发生器中使用的梅森素数m(n)以及它的比特长度n,同时设定基础随机数的汉明重量范围相关参数h,同时选定初始的随机比特序列r;
[0041]
步骤二:将r输入采样算法s,采样后得到s(r)-》a,b,a和b是两个n比特长的基础随机数;
[0042]
步骤三:将a和b输入计算模块中,在m(n)的环上计算c=a/b mod m(n);
[0043]
步骤四:将c数制转换为二进制数d(只包含0和1),随后将d由低位至高位依次输出二元比特序列s,最后生成符合密码学安全的伪随机数序列;
[0044]
所述步骤二中的采样算法s包括:
[0045]
输入:初始随机比特序列r
[0046]
输出:n比特长的基础随机数a和b
[0047]
步骤一:首先将r分为任意两部分,即r1和r2;
[0048]
步骤二:将r1作为随机种子,应用knuth洗牌算法对数组[1,2,

,n]进行随机置乱得到新数组i;
[0049]
步骤三:取随机置乱数组i的前h个元素,即i(1),i(2),

,i(h);
[0050]
步骤四:对n比特长且汉明重量为0的比特串进行0与1的替换操作,将对应i(1),i(2),

,i(h)位置的0都替换为1;
[0051]
步骤五:新得到的是n比特长且汉明重量为h的比特串,记为a;
[0052]
步骤六:将r2作为随机种子,应用knuth洗牌算法对数组[1,2,

,n]进行随机置乱得到新数组i;
[0053]
步骤七:取随机置乱数组i的前h个元素,即i(1),i(2),

,i(h);
[0054]
步骤八:对n比特长且汉明重量为0的比特串进行0与1的替换操作,将对应i(1),i(2),

,i(h)位置的0都替换为1;
[0055]
步骤九:新得到的是n比特长且汉明重量为h的比特串,记为b;
[0056]
步骤十:返回n比特长的基础随机数a和b。
[0057]
尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本
发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1