一种分散机制的软件随机数生成方法

文档序号:6513254阅读:331来源:国知局
一种分散机制的软件随机数生成方法
【专利摘要】本发明提供一种分散机制的软件随机数生成方法,该方法为:1、获取初始的随机数种子,所述随机数种子为读取到的系统时间值,该随机数种子占N个字节;2、随机数种子通过线性同余算法,得到过程随机数;所述线性同余算法过程若产生溢出,则取低N字节的结果,丢弃溢出位;3、对产生的过程随机数进行分散;所述分散方式为将过程随机数的每N个字节数进行划分出来,并将各字节的值在一查询表中进行查询,查询到后进行置换,将置换得到的结果进行依次合并得到一结果随机数;4、输出所述结果随机数。本发明在循环迭代过程中加入了数据分散机制,增强了软件随机数据的随机性;并大大降低了被破解的可能性,从而提高了产品的安全性。
【专利说明】一种分散机制的软件随机数生成方法
【技术领域】
[0001]本发明涉及计算机通信【技术领域】,尤其涉及一种分散机制的软件随机数生成方法。
【背景技术】
[0002]随机数在安全算法领域的作用非常大,按其实现方式可分为硬件随机数和软件随机数两大类。一般地硬件随机数的性能会优于软件随机数,所谓随机数的性能,可以使用大量的随机数样本进行NIST (国家标准与技术研究所)随机数测试工具(一种目前较权威的随机数测试工具)进行测试,以该工具的测试结果通过率进行评估。但现有技术中,硬件随机数的生产装置需要较高的成本,而软件随机数的成本仅需软件资源的成本,可忽略不计。在对安全性要求较低的领域,结合成本因素,更有可能选用软件随机数生成算法,不同软件随机数的算法的随机性能存在一定差异。业内最常见的软件随机数算法为线性同余算法,本专利申请文件针对线性同余算法进行增加分散机制的设计,能提高生成的随机数性能,即同等随机数样本总数情况下,通过NIST测试的随机数样本数量增加。
[0003]由于软件随机数的常见算法为线性同余算法,这种算法的缺点在于循环迭代过程中,易产生规律性,即随机性被减弱。本专利申请文件在循环迭代过程中加入了数据分散机制,增强了数据的随机性。
[0004]此外,线性同余算法是容易被破解的,此处破解指通过连续若干次的随机数生成,即可通过有限域内解方程组方法推导出所使用的参数a,b,进而计算出后续的随机数,使随机数的意义减少,甚至消失。而通过分散机制的随机数生成算法,通过有限域内解方程组推导参数的方法将不可行,被破解的可能性大大降低,因此此方法在安全领域显得很有意义。

【发明内容】

[0005]本发明要解决的技术问题,在于提供一种分散机制的软件随机数生成方法,增强了软件随机数据的随机性;从而进行NIST工具测试的通过率增加。
[0006]本发明是这样实现的:一种分散机制的软件随机数生成方法,所述方法具体包括如下步骤:
[0007]步骤1、获取初始的随机数种子,所述随机数种子为读取到的系统时间值,该随机数种子占N个字节,N为大于I的整数;
[0008]步骤2、随机数种子通过线性同余算法,得到过程随机数;线性同余算法公式为:Rl=a*R0+b ;其中a为8*N位的素数,b为8*N位的奇数,RO为随机数种子,Rl为过程随机数;所述线性同余算法过程若产生溢出,则取低8*N位的结果,丢弃溢出位;
[0009]步骤3、对产生的过程随机数进行分散;所述分散方式为将过程随机数的N个字节按字节进行划分出来,并将各字节的值在一查询表中进行查询,查询到后进行置换,将置换得到的结果进行依次合并得到一结果随机数;所述查询表中包含有256个序号,每个序号对应一数值;各字节的值与各序号进行查询匹配,匹配后置换序号对应的数值;该查询表用于对各字节的值进行置换为没有规律的分散值,从而生成N字节的结果随机数;
[0010]步骤4、输出所述结果随机数。
[0011]本发明具有如下优点:现有的线性同余算法缺点在于循环迭代过程中,易产生规律性,即随机性被减弱。本发明在循环迭代过程中加入了数据分散机制,增强了软件随机数据的随机性;从而进行NIST工具测试的通过率增加;同时大大降低了被破解的可能性,提高了产品的安全性。
【专利附图】

【附图说明】
[0012]图1为本发明方法流程示意图。
【具体实施方式】
[0013]请参阅图1所示,本发明为一种分散机制的软件随机数生成方法,所述方法具体包括如下步骤:
[0014]步骤1、获取初始的随机数种子,所述随机数种子为读取到的系统时间值,该随机数种子占N个字节,N为大于I的整数,可取系统字长值;(例如32位系统可取N为4)
[0015]步骤2、随机数种子通过线性同余算法,得到过程随机数;线性同余算法公式为:Rl=a*R0+b ;其中a为8*N位的素数,b为8*N位的奇数,RO为随机数种子,Rl为过程随机数;所述线性同余算法过程若产生溢出,则取低8*N位的结果,丢弃溢出位;
[0016]步骤3、对产生的过程随机数进行分散;所述分散方式为将过程随机数的N个字节按字节进行划分出来,并将各字节的值在一查询表中进行查询,查询到后进行置换,将置换得到的结果进行依次合并得到一结果随机数;所述查询表中包含有256个序号,每个序号对应一数值;所述各数值为大于或等于O的16进制数据(即所述数据置换的查询表中的参考数组为表格数据构成的数组,其他具备无规律性的数组也可以作为查询表中的数据置换数组。即将表格数据作为参考,而非必须。);各字节的值与各序号进行查询匹配,匹配后置换序号对应的数值;该查询表用于对各字节的值进行置换为没有规律的分散值从而生成N字节的结果随机数;
[0017]步骤4、输出所述 结果随机数;其中,在输出结果随机数后,根据系统所需要的随机数长度进行判断,若还需要产生随机数,则将步骤3得到的结果随机数作为新的随机数种子,继续执行步骤2步到步骤4得到新的结果随机数,反复执行直到所需长度足够为止。
[0018]另外,在发明中,所述查询表中各序号和数值对应关系如表1 (注:下表数据均为16进制数据):
[0019]表1
【权利要求】
1.一种分散机制的软件随机数生成方法,其特征在于,所述方法具体包括如下步骤: 步骤1、获取初始的随机数种子,所述随机数种子为读取到的系统时间值,该随机数种子占N个字节,N为大于I的整数; 步骤2、随机数种子通过线性同余算法,得到过程随机数;线性同余算法公式为:Rl=a*RO+b ;其中a为8*N位的素数,b为8*N位的奇数,RO为随机数种子,Rl为过程随机数;所述线性同余算法过程若产生溢出,则取低8*N位的结果,丢弃溢出位; 步骤3、对产生的过程随机数进行分散;所述分散方式为将过程随机数的N个字节按字节进行划分出来,并将各字节的值在一查询表中进行查询,查询到后进行置换,将置换得到的结果进行依次合并得到一结果随机数;所述查询表中包含有256个序号,每个序号对应一数值;各字节的值与各序号进行查询匹配,匹配后置换序号对应的数值;该查询表用于对各字节的值进行置换为没有规律的分散值,从而生成N字节的结果随机数; 步骤4、输出所述结果随机数。
2.根据权利要求1所述的一种分散机制的软件随机数生成方法,其特征在于: 所述步骤4进一步包括:输出结果随机数,根据系统所需要的随机数长度进行判断,若还需要产生随机数,则将步骤3得到的结果随机数作为新的随机数种子,继续执行步骤2步到步骤4得到新的结果随机数,反复执行直到所需长度足够为止。
3.根据权利要求1所述的一种分散机制的软件随机数生成方法,其特征在于:所述查询表中各序号和数值对应关系为:00 — d6,01—90,02—e9,03—fe,04—cc,05—el,06—3d,07 — b7,08 —16,09 — b6,Oa —14,Ob — c2,Oc — 28,Od — fb,Oe — 2c,Of — 05,10 — 2b,11—67,12—9a,13—76,14—2a,15—be,16—04,17—c3,18—aa,19—44,la—13,Ib—26,Ic一49,Id—86,Ie — 06,If—99,20 — 9c,21—42,22— 50,23 — f4,24 — 91,25 — ef,26—98,27—7a,28—33,29—54,2a—Ob,2b—43,2c—ed,2d—cf,2e—ac,2f—62,30—e4,31—b3,32— Ic, 33—a9,34— c9,35—08,36— e8,37—95,38—80,39— df,3a—94,3b — fa,3c—75,3d—8f,3e — 3f,3f — a6,40— 47,41—07,42—a7,43—fc,44—f3,45—73,46—17,47—ba,48—83,49—59,4a—3c, 4b—19,4c—e6,4d—85, 4e—4f,4f—a8,50— 68,51 — 6b,52 — 81,53—b2,54 — 71,55— 64,56 — da,57 — 8b,58 — f8,59 — eb,5a—0f,5b—4b,5c—70,5d—56,5e—9d,5f—35,60—le,61—24,62—0e,63—5e,64—63,65— 58,66 — dl,67 — a2,68— 25,69— 22,6a—7c,6b — 3b,6c — 01,6d—21,6e — 78,6f-87,70 — d4,71—00,72— 46,73— 57,74 — 9f,75 — d3,76— 27,77— 52,78 — 4c,79— 36,7a—02,7b—θ7,7c—aO, 7d—c4, 7e—c8, 7f—9e,80—ea,81—bf, 82—8a,83—d2,84—40,85—c7,86—38,87—b5,88—a3, 89—f 7,8a—f 2, 8b—ce, 8c—f 9, 8d—61,8e—15,8f—a I,90—e0,91—ae,92—5d,93—a4,94—9b,95—34,96— la,97—55,98—ad,99—93j,9a—32?9b—30?9c—f5,9d—8c,9e—bl,9f—e3,aO—Id,al—f6,a2—e2,a3—2e,a4—82,a5—66,a6—ca,a7—60,a8—c0,a9—29,aa—23,ab—ab,ac—0d,ad—53,ae—4e,af—6f,bO — d5,bl — db,b2 — 37,b3 — 45,b4—de,b5 — fd,b6 — 8e,b7 — 2f,b8 — 03,b9—ff,ba—6a,bb—72,be—6d,bd—6c,be—5b,bf—51,cO—8d,cl—lb, c2—af,c3—92,c4—bb,c5—dd,c6—be,c7—7f,c8—11,c9—d9,ca—5c,cb—41,cc—If, cd—10,ce—5a,cf—d8, dO—0a,dl—cl,d2—31,d3—88,d4—a5, d5—cd,d6—7b,d7—bd,d8—2d,d9—74,da—dO, db—12,dc—b8, dd—e5, de—b4,df—bO, e0—89,el—69,e2—97,e3—4a, e4—Oc, e5—96, e6—77, e7—7e, e8—65, e9—b9, ea—fI, eb—09, ec—c5, ed—6e, ee—c6, ef—84,f0—18, fl—fO, f2 — 7d,f3 — ec,f4—3a,f5 — dc,f6 — 4d,f7 — 20,f8—79, f9—ee, fa—5f`, fb — 3e,fc一d7,fd—cb,fe—39, ff—48。
【文档编号】G06F7/58GK103530086SQ201310444948
【公开日】2014年1月22日 申请日期:2013年9月26日 优先权日:2013年9月26日
【发明者】蒋声障, 张登峰, 余杭军 申请人:福建升腾资讯有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1