一种随机数生成方法、装置、电子设备及存储介质与流程

文档序号:31525088发布日期:2022-09-14 13:56阅读:134来源:国知局
一种随机数生成方法、装置、电子设备及存储介质与流程

1.本发明涉及数据处理技术领域,特别涉及一种随机数生成方法、装置、电子设备及存储介质。


背景技术:

2.随着计算机系统和通信技术的快速发展,信息的安全性对于人们来说也越来越重要,为了提高信息的安全性,通常需要对信息进行加密,而采用随机数配置某些参数是常见的实用方式之一,因此,生成一个高质量的随机数对于信息加密至关重要。
3.随机数要求具有一定的不可预测性,即获得的数据没有任何规律,是完全随机的,目前,基于硬件的随机数发生器和基于物理噪声的真随机数发生器已经被广泛的采用,但在某些场景下,基于硬件的随机数发生器由于需要相应的硬件支持而难以满足当前的实际应用场景,而基于软件实现的伪随机数生成器在实用性、低成本和易实现方面均占居优势,因此,相应的伪随机数的算法应运而生。
4.目前,基于软件实现的伪随机数常采用美国伪随机数生成器标准ansi x9.17的逻辑结构,该结构每产生一个随机数,需要调用3次密钥进行加密运算,运算效率不高,且,需要安全存储加密密钥及内部状态种子数据,即需要安全存储两种数据以便于生成随机数。
5.因此,在保证安全生成随机数的前提下,如何生成满足要求的随机数,减少加密运算次数,提高随机数的效率,减少安全存储数据的个数,以减少存储空间及降低安全管理成本,是一个需要解决的技术问题。


技术实现要素:

6.本发明实施例公开了一种随机数生成方法、装置、电子设备及存储介质,仅需调用一次哈希运算,即可以实现对随机种子的更新及随机数的生成。
7.第一方面,本发明实施例提供了一种随机数生成方法,包括:
8.对实时采集的环境数据进行处理,获得环境样本数据,根据所述环境样本数据及预设函数,生成第一临时数据;
9.获取存储的随机种子数据,基于所述随机种子数据及所述第一临时数据,确定出第二临时数据;根据所述第二临时数据及预设的哈希算法,获得预设长度的哈希值;
10.根据所述预设长度的哈希值,更新所述随机种子数据,并生成第一长度的随机数;
11.其中,所述预设长度大于所述第一长度。
12.本发明的实施例的技术方案,仅调用一次哈希算法即可生成随机数,省去了调用加密运算的次数,提高了生成随机数的效率,且在实施方案的过程中,利用了各种环境数据作为参数,增加了熵源的多样性和复杂性,进而使获得的输入参数具有一定的复杂性、随机性和不可预测性。将输入参数作为哈希算法的输入来生成随机数,生成的随机数满足了安全性及不可预测性的要求,且随机数是由哈希算法产生的,哈希算法的安全性得到了公认,哈希值符合随机性指标已经得到论证。且本发明的技术方案,不需要使用密钥,仅有一个随
机数种子数据需要安全性存放,减少了存储空间及降低了安全管理成本,技术方案逻辑结构简洁高效,易于推广及实现,可应用于各种需要随机数的场景,应用场景广泛。
13.在一些实施例中,所述基于所述随机种子数据及所述第一临时数据,确定出第二临时数据,具体包括:
14.将所述随机种子数据、所述第一临时数据,拼接为所述第二临时数据。
15.在一些实施例中,所述将所述随机种子数据、所述第一临时数据,拼接为所述第二临时数据,具体包括:
16.将所述随机种子数据转换为第一字符串;
17.将所述第一临时数据转换为第二字符串;
18.将所述第一字符串与所述第二字符串进行拼接,获得第三字符串;
19.所述第三字符串为所述第二临时数据。
20.在一些实施例中,所述根据所述预设长度的哈希值,更新所述随机种子数据,并生成第一长度的随机数,具体包括:
21.取所述预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,其中,所述第二子数据的长度大于等于所述第一长度;
22.所述第一子数据用于更新所述随机种子数据,所述第二子数据用于生成所述随机数。
23.用拆分的方式确定第一子数据、第二子数据,可以确保第一子数据、第二子数据中不包含交叠的部分数据,即第一子数据、第二子数据之间不具有可利用的规律,提高了生成随机数的安全性。且本发明实施例的技术方案,利用哈希算法产生的哈希值,同时完成了对随机种子数据的更新及随机数的生成,相较于传统的生成随机数的方式来说,不需要通过多次调用加密算法生成随机数后再生成随机种子,不需要基于密钥调用加密算法,节省了系统资源的开销,在保证了随机数的安全性及不可预测性的同时,还提高了生成随机数的效率。
24.在一些实施例中,所述取所述预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,具体包括:
25.将所述预设长度的哈希值转换为第四字符串;
26.将所述第四字符串的部分/全部字符串,拆分为第一子字符串、第二子字符串;
27.所述第一子字符串为所述第一子数据,所述第二子字符串为所述第二子数据。
28.在一些实施例中,所述第一子数据用于更新所述随机种子数据,具体包括:
29.基于当前存储的随机种子数据与所述第一子数据,生成新的随机种子数据,用所述新的随机种子数据更新存储的随机种子数据。
30.本发明的实施例在生成新的随机种子数据时,基于当前存储的随机种子数据与第一子数据共同生成的,即使第一子数据被破译者截取,破译者也无法获得随机种子的存储状态,保证了随机种子的安全性,在利用当前的随机种子及第一子数据生成新的随机种子数据后,将新的随机种子数据代替原来的随机种子,保证了随机种子动态的随机性。
31.在一些实施例中,所述基于当前存储的随机种子数据与所述第一子数据,生成新的随机种子数据,具体包括:
32.将当前存储的随机种子数据与所述第一子数据进行异或运算,将运算获得的数
据,作为所述新的随机种子数据;或者
33.将当前存储的随机种子数据与所述第一子数据进行拼接,获得临时拼接数据;并根据当前存储的随机种子数据的长度,从所述临时拼接数据中截取出相同长度且与当前存储的随机种子数据不完全相同的数据,作为所述新的随机种子数据;或者
34.从当前存储的随机种子数据及所述第一子数据中分别选取一部分数据,并将选取的各数据重新排列组合,作为所述新的随机种子数据;其中,被选取数据的总长度与当前存储的随机种子数据的长度相同。
35.该种更新方式,综合考虑了原随机种子,及由哈希算法生成的从中截取的第一子数据的随机性,哈希算法的安全性很高,因此,哈希算法生成的哈希值的结果也无法被破解者所破译的,从中截取出的数据片段作为第一子数据同样对于破解者来说无法获取,因此,将第一子数据与原随机种子进行运算时,破译者无法有效的猜测第一子数据,更无从下手获得随机种子数据,因此,该种方式,生成随机种子的安全性很高,满足了生成随机种子的安全性要求。
36.在一些实施例中,所述第二子数据用于生成所述随机数,具体包括:
37.从所述第二子数据中截取出长度与所述第一长度相同的数据作为所述随机数。
38.第二方面,本发明实施例提供了一种随机数生成装置,所述装置包括:
39.获取模块,用于对实时采集的环境数据进行处理,获得环境样本数据,根据所述环境样本数据及预设函数,生成第一临时数据;还用于,获取存储的随机种子数据,基于所述随机种子数据及所述第一临时数据,确定出第二临时数据,根据所述第二临时数据及预设的哈希算法,获得预设长度的哈希值;
40.生成模块,用于根据所述获取模块获得的所述哈希值,更新所述随机种子数据,并生成第一长度的随机数;
41.其中,所述预设长度大于所述第一长度。在一些实施例中,所述基于所述随机种子数据及所述第一临时数据,确定出第二临时数据,具体包括:
42.将所述随机种子数据、所述第一临时数据,拼接为所述第二临时数据。
43.在一些实施例中,所述将所述随机种子数据、所述第一临时数据,拼接为所述第二临时数据,具体包括:
44.将所述随机种子数据转换为第一字符串;
45.将所述第一临时数据转换为第二字符串;
46.将所述第一字符串与所述第二字符串进行拼接,获得第三字符串;
47.所述第三字符串为所述第二临时数据。
48.在一些实施例中,所述根据所述预设长度的哈希值,更新所述随机种子数据,并生成第一长度的随机数,具体包括:
49.取所述预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,其中,所述第二子数据的长度大于等于所述第一长度;
50.所述第一子数据用于更新所述随机种子数据,所述第二子数据用于生成所述随机数。
51.在一些实施例中,所述取所述预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,具体包括:
52.将所述预设长度的哈希值转换为第四字符串;
53.将所述第四字符串的部分/全部字符串,拆分为第一子字符串、第二子字符串;
54.所述第一子字符串为所述第一子数据,所述第二子字符串为所述第二子数据。
55.在一些实施例中,所述第一子数据用于更新所述随机种子数据,具体包括:
56.基于当前存储的随机种子数据与所述第一子数据,生成新的随机种子数据,用所述新的随机种子数据更新当前存储的随机种子数据。
57.在一些实施例中,所述基于当前存储的随机种子数据与所述第一子数据,生成新的随机种子数据,具体包括:
58.将当前存储的随机种子数据与所述第一子数据进行异或运算,将运算获得的数据,作为所述新的随机种子数据;或者
59.将当前存储的随机种子数据与所述第一子数据进行拼接,获得临时拼接数据;并根据当前存储的随机种子数据的长度,从所述临时拼接数据中截取出相同长度且与当前存储的随机种子数据不完全相同的数据,作为所述新的随机种子数据;或者
60.从当前存储的随机种子数据及所述第一子数据中分别选取一部分数据,并将选取的各数据重新排列组合,作为所述新的随机种子数据;其中,被选取数据的总长度与当前存储的随机种子数据的长度相同。
61.在一些实施例中,所述第二子数据用于生成所述随机数,具体包括:
62.从所述第二子数据中截取出长度与所述第一长度相同的数据作为所述随机数。
63.第三方面,本发明实施例提供了一种电子设备,包括:处理器和存储器;
64.所述处理器用于调用所述存储器中存储的程序,当所述程序被执行时,使得处理器执行上述第一方面中任一项所述的方法。
65.第四方面,本发明实施例提供了一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述第一方面中任一项所述的方法。
66.本发明的实施例的技术方案,仅调用一次哈希算法即可生成随机数,不必调用加密运算,提高了生成随机数的效率,且在实施方案的过程中,利用了各种环境数据作为参数,增加了熵源的多样性和复杂性,进而使获得的输入参数具有一定的复杂性、随机性和不可预测性。输入参数作为哈希算法的输入来生成随机数,生成的随机数满足了安全性及不可预测性的要求,且随机数是由哈希算法产生的,哈希算法的安全性已经得到论证;且本发明的技术方案,不需要使用密钥,仅有一个随机数种子数据需要安全存放,减少了存储空间及降低了安全管理成本,技术方案逻辑结构简洁高效,易于推广及实现,可应用于各种需要随机数的场景,应用场景广泛。
附图说明
67.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
68.图1为本发明实施例提供的一种随机数生成方法的流程图;
69.图2为本发明实施例提供的一种随机数生成方法中各数据之间逻辑关系的示意框
图;
70.图3为本发明实施例提供的一种随机数生成装置示意框图;
71.图4为本发明实施例提供的一种电子设备示意框图。
具体实施方式
72.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
73.需要理解的是,在本发明实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
74.本发明中字符“/”,一般表示前后关联对象,是一种“或”的关系。
75.目前,基于软件实现的伪随机数常采用美国伪随机数生成器标准ansi x9.17的逻辑结构。
76.ansi x9.17逻辑结构中,每产生一个随机数,需要调用3次密钥进行加密运算,采用三次加密的步骤原因为当前的时间容易被破译者获取,即当前时间是可以被破译者预测出来的,但是由于破译者不知道加密密钥,因此他无法预测加密后的加密时间,通过内部状态种子进行异或操作后,破译者在获取不到内部状态种子及密钥的前提下,第一次加密后的结果相对比较安全,将第二加密的结果作为随机数输出,再进行第三次加密后,将第三次的加密结果作为新种子,以便下一次调用。
77.通过分析上述步骤,可以发现,ansi x9.17的逻辑结构,加密密钥的使用保证了破译者无法根据输出的伪随机数列来推测出内部状态的种子数据,也无法通过预测当前时间及输出的伪随机数列推断内部种子数据,即,三次加密的技术方案,保证了破译者无法通过预测当前时间及根据输出的随机数来推断出内部种子状态,该方案可以被反复的调用并多次输出随机数。
78.因此,为了实现上述方案,需要安全的保护种子数据及加密密钥两种数据,且该种随机数的生成方式,需要调用三次加密运算,生成随机数的效率不高,因此,在保证安全生成随机数的前提下,如何生成满足要求的随机数,减少加密运算次数,以提高随机数的效率,减少安全存储数据的个数,以减少存储空间及降低安全管理成本,是一个需要解决的技术问题。
79.本发明实施例提供了一种随机数生成方法,可以应用于诸如各种终端,例如手机、平板电脑、可穿戴设备(例如,手表、手环等)、车载设备、笔记本电脑、个人计算机(pc机)、台式计算机、上网本、个人数字助理(personal digital assistant,pda)、智能家居设备(例如,智能电视,智能音箱,智能摄像头等)等各种电子设备。可以理解的是,本技术实施例对可应用的电子设备的具体类型不作任何限制。
80.在详细阐述本发明之前,首先对本发明相关的名词进行解释。
81.(1)哈希算法
82.又称为散列或hash算法,是一个可以将一组任意长度的输入信息,转换成一段固定长度的字符串的算法。
83.常用的哈希算法如md5、sha-1、sha-224、sha-256、sha-384、sha-512和国密算法sm3等,不同的哈希算法输出的字符串的长度不尽相同。
84.哈希算法具有如下的特性:
85.1)正向快速
86.执行效率高效,针对较长的文本,也能相对快速地计算出哈希值。
87.2)逆向困难
88.从哈希值不能反向推导出原始数据,即使哈希值相同,也无法推导出输入的数据,所以哈希算法也叫单向函数,输入值与输出值之间没有可利用的规律,不能通过输出值算出输入值。
89.3)输入敏感
90.原始输入信息发生任何变化,新的哈希值会出现很大变化,哪怕原始数据只修改了一个比特位,得到的哈希值也大不相同。
91.4)冲突避免
92.很难找到两段输入内容不同的明文,使得它们产生的哈希值一样,对于输入的不同的原始数据,得到的哈希值相同的概率非常低;
93.也可以理解为,不同的输出,在经过哈希运算后,输出为相同的哈希值的概率很小。
94.本发明实施例提供了一种随机数生成方法,包括:
95.对实时采集的环境数据进行处理,获得环境样本数据,根据环境样本数据及预设函数,生成第一临时数据;
96.获取存储的随机种子数据,基于随机种子数据及第一临时数据,确定出第二临时数据;根据第二临时数据及预设的哈希算法,获得预设长度的哈希值;
97.根据预设长度的哈希值,更新随机种子数据,并生成第一长度的随机数;
98.其中,预设长度大于第一长度。
99.以下通过具体实施例进行说明,见图1、图2所示,图1为本发明实施例提供的一种随机数生成方法流程图,图2为本发明实施例提供的一种随机数生成方法的中各数据之间逻辑关系的示意框图。
100.s101:对实时采集的环境数据进行处理,获得环境样本数据,根据环境样本数据及预设函数,生成第一临时数据;
101.对实时采集的环境数据进行处理,获得的环境样本数据,是根据采集到的环境数据进行处理之后,获得的处理器可识别的数值数据,数值数据可以是数字、比特、字节、符号等各种表征形式。
102.由于获取到的环境样本数据的表现形式可能会各不相同,因此,需要将其转换为第一临时数据后使用,本领域的技术人员根据具体的应用场景及获取到的环境样本数据,通过预设函数处理,转化为所需要的第一临时数据,当然,由于获得的环境样本数据不仅只有一个或一种,也可以具有多个及多种,因此可以根据获取到的各种环境数据通过预设函数进行计算而获得,或是针对多种环境样本数据通过如异或运算而获得,对于预设函数的确定,本领域技术人员可根据实际需要自行确定,优选的,第一临时数据可以由n字节字符组成,4≤n≤12,其中,n为正整数。
103.预设函数可以很简单,也可以复杂,例如,一个32位整型数x可以由高位到低位按8比特分割,自然地构成4个字节。也可以作一些略微复杂的运算,比如由x计算y=x3+5x+7mod2
32
,然后将y按8比特分割为4个字节,实现了由32位数x到4个字节的转换,本领域的技术人员可以根据实际需要,自行设置预设函数,此处不进行限定。
104.s102:获取存储的随机种子数据,基于随机种子数据及第一临时数据,确定出第二临时数据;根据第二临时数据及预设的哈希算法,获得预设长度的哈希值。
105.一般的,本方法在运行中具有预存储的随机种子数据的,但若为首次使用,优选的,建议对随机种子数据进行初始化操作,初始化过程中可以利用使用者正在输入的键盘中输入的数据、鼠标移动的速度、光标所在当前屏幕中位置坐标点等信息,也可以是获得的时间数据、或是采集到的声音信息数据等,作为获取的各种环境样本数据,根据环境样本数据及预设函数,生成临时数据,并将临时数据作为随机种子数据进行保存,存储到存储单元中。
106.根据环境样本数据及预设函数,生成临时数据,并将临时数据作为随机种子数据进行保存,存储到存储单元过程中所采用的预设函数可以如上所述很简单,也可以复杂,此处不再举例,本领域的技术人员可以根据实际需要,自行设置预设函数用以生成随机种子数据,用于生成随机种子的预设函数可以与上述生成第一临时数据时所采用的预设函数相同,也可以不同,本领域技术人员可以自行设置,此处不进行限定。
107.若不进行初始化操作,随机种子数据具有默认的初始值。
108.随机种子数据通常在终端中具有单独的存储单元,由于受实际应用存储空间的限制,随机种子数据往往会受其长度的限制,如随机种子数据小于等于16字节,或是小于等于32字节等,可根据实际情况具体进行设置,通常的,随机种子数据的长度越长,相对的熵量越高,但出于综合性考虑,优选的,随机种子的长度小于等于32字节时即可以满足需要。
109.当然,若是有足够的存储空间,随机种子数据是可以不受长度限制的,因此,本发明未对随机种子的长度进行限定,但为了便于说明本发明的实施例,某些实施例中对随机种子的长度进行了限定,但应理解的是,这并不能构成对本发明的限制。
110.获取到随机种子数据以后,则基于随机种子数据及第一临时数据,确定出第二临时数据。而基于随机种子数据及第一临时数据,确定出第二临时数据的过程,可以为各种处理函数,如将随机种子数据及第一临时数据作为某个处理函数的输入,将获得的函数的输出作为第二临时数据,也可以为各种运算,如,将随机种子数据及第一临时数据采用异或运算获得的结果作为第二临时数据,或是采用字符的拼接方式获得的第二临时数据等,也可以是根据实际需要定义的运算方式,对于本领域的技术人员来说,只需要利用随机种子及第一临时数据得到第二临时数据即可,使得到的第二临时数据,与随机种子数据、第一临时数据不同。
111.哈希算法前述已经进行了说明,哈希算法是将任意长度的输入转换成一段固定长度的字符串的算法,因此,将第二临时数据作为哈希算法的输入,确定了哈希算法后,即可以确定输出的哈希值的长度,即会获得预设长度的哈希值。
112.s103:根据预设长度的哈希值,更新随机种子数据,并生成第一长度的随机数;其中,预设长度大于第一长度。
113.在获得哈希值以后,根据哈希值,更新随机种子数据及生成第一长度的随机数;更
新随机种子的方式及生成第一长度的随机数不限,可以将哈希值与原随机种子数据进行异或后获得的新的数值作为新的随机种子保存,并截取第一长度的哈希值,作为第一长度的随机数;也可以采用拼接的方式,将哈希值与原随机种子拼接后的结果作为随机种子,将哈希值与第一临时数据进行异或后,截取出第一长度,作为生成的随机数。
114.需要注意的是,第一长度只是限定此次随机数生成时的随机数的长度,而不代表最终所需要的随机数的长度,若所需要的随机数的长度并非所需的第一长度,或是随机数的长度大于第一长度时,可以通过截取指定长度的随机数,或再次调用生成随机数、生成多个随机数后通过拼接或是截取的方式,来获得所需长度的随机数,因此,本发明的实施例,可以获得所需要的任何长度的随机数而并非只获得了第一长度的随机数。
115.本发明的实施例的技术方案,仅采用一次哈希算法即可生成随机数,不必调用加密运算,提高了生成随机数的效率,且在实施方案的过程中,利用了各种环境数据作为参数,增加了熵源的多样性和复杂性,进而使获得的输入参数具有一定的复杂性、随机性和不可预测性。输入参数作为哈希算法的输入来生成随机数,生成的随机数满足了安全性及不可预测性的要求,且随机数是由哈希算法产生的,哈希算法的安全性已经得到论证和公认,且本发明的技术方案,不需要使用密钥,仅有一个随机数种子数据需要安全存放,减少了存储空间及降低了安全管理成本,技术方案逻辑结构简洁高效,易于推广及实现,可应用于各种需要随机数的场景,应用场景广泛。
116.本发明中的环境样本数据,是根据采集到的环境数据进行处理之后,获得的数值数据;环境数据,可以是根据键盘输入时获取的键盘的字符、鼠标移动时的速度数据、光标所在当前屏幕中的位置坐标数据、获得的时间信息数据,或从终端获取到的加速度信息数据、应用终端所在的地理位置数据、磁力信息数据、收集到的声音信息数据中至少任意一种。
117.本发明实施例可以应用至各种电子设备中,常用的如手机,个人计算机等,将采集到的环境数据进行处理之后,会得到数值数据,若应用的电子设备为个人计算机时,采集的环境数据可以为操作者正在敲击键盘时的键盘输入数据(如:键盘输入值、键盘敲击之间的间隔等),或鼠标移动时的数据(如:鼠标移动速度、移动距离等信息)、鼠标所在屏幕的位置坐标信息、光标所在当前屏幕中的位置的坐标数据、当前的时间数据等,若应用的电子设备为手机,则采集的环境数据可以为从当前手机中获取到的加速度信息数据、当前手机所在的地理位置数据、当前手机获取到的磁力信息数据、或通过手机话筒收集到的声音信息数据、手机的当前时间数据等,获取的环境数据为以上信息中的一种或其组合,即至少其中任意一种,获得的环境信息不仅如上述的举例,只要确定所获得的环境数据在任一时刻具有不确定性、不可预知性,即可以做为环境数据而使用。
118.时间信息可以做为环境数据而使用是因为,对于破译者而言,破译者无法预测哪个时间点可以做为当前的环境数据而使用,即无法提前预知,时间信息同样是具备不确定性、不可预知性的。
119.在采集环境数据时,相应的会具有采集设备,一般的采集设备不需要额外增加,利用电子设备中已经具有设备的即可,如个人计算机中的键盘、鼠标等可以做为采集设备中的一种或多种,再如手机中的加速度传感器、陀螺仪、磁力传感器、话筒等,也可以做为采集设备中的一种或多种,若都不具备,通过获得当前电子设备中的系统时间也可以做为环境
数据中的一种,因此,本发明中的技术方案,在实际应用过程中不需要额外增加相关硬件,只需利用当前终端中所具有的功能即可。
120.具体的,环境数据可以为加速度传感器采集的当前环境下加速度数值,也可以为磁力传感器采集的当前环境下的环境磁场数据,如磁北、真北、磁偏角等,还可以为话筒收集到的当前环境下的音频数据,如音高、音强、音长等。
121.对环境数据进行信息处理,可以是对采集的环境信息进行采样、量化、编码处理,还可以是对采集的环境信息进行分帧、时/频域变换提取特征等信息处理得到的环境样本数据。
122.比如,话筒(相当于声音采集装置)采集到当前环境中的音频数据,音频数据实际上是一种信息波,可以对信息波进行预处理,如滤波、放大等处理,同时对信息波进行分帧,然后对分帧后的信息波作时/频域变换提取特征等处理,在经过上述过程之后音频数据就转化为数值而被识别。
123.需要说明的是,信息处理的方式有很多,可以是上述的一种或多种,此处不作具体限定。
124.本发明的实施例,将采集到的环境数据作为输入参数之一,并经过处理得到的数据作为输入参数,利用了环境数据的不确定性、不可预知性,使获得的参数具有一定程度的不可预测性,并将获得的参数作为之后的输入,提高了输入数据的复杂程度,相对的提高了破译者破译的难度,相对的提高了本技术技术方案的安全性。
125.可选的,作为其中一种实施例,基于随机种子数据及第一临时数据,确定出第二临时数据,具体包括:
126.将随机种子数据、第一临时数据,拼接为第二临时数据。
127.可选的,作为其中一种实施例,将随机种子数据、第一临时数据,拼接为第二临时数据,具体包括:
128.将随机种子数据转换为第一字符串;
129.将第一临时数据转换为第二字符串;
130.将第一字符串与第二字符串进行拼接,获得第三字符串;
131.第三字符串为第二临时数据。
132.以下通过具体实施例进行说明。
133.设获取到的随机种子数据为“edsgewt4”,第一临时数据为“212rehbjc”,将随机种子数据、第一临时数据,拼接为第二临时数据,获得第二临时数据为“edsgewt4212rehbjc”,还可以为“212rehbjcedsgewt4”,无论是随机种子在先,还是第二临时数据在先都可以,并不影响本发明的技术方案的本质,本领域的技术人员可以根据实际需要自行设置。
134.若随机种子数据为“edsgewt4”的字符串形式,而获得的第一临时数据为“202204111458241”的整数形式时,需要对第一临时数据进行类型转换,将其转换为字符串数据,再与随机种子数据进行拼接而形成第二临时数据。任何一个编程语言都具有将数据转换为字符串算法的函数工具,将数据转换为字符串算法属于现有技术,将第一临时数据转换为字符串以后,再将随机种子数据与转换后的字符串形式的第一临时数据进行拼接。
135.以上述实施例为例,设第一字符串为“edsgewt4”;
136.设第二字符串为“202204111458241”;
137.将第一字符串与第二字符串进行拼接,获得第三字符串;
138.即,获得的第三字符串为“edsgewt4202204111458241”,或“202204111458241edsgewt4”,第三字符串即为第二临时数据。
139.可选的,作为其中一种实施例,根据预设长度的哈希值,更新随机种子数据,并生成第一长度的随机数,具体包括:
140.取预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,其中,第二子数据的长度大于等于第一长度;
141.第一子数据用于更新随机种子数据,第二子数据用于生成随机数。
142.取预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,具体包括:
143.将预设长度的哈希值转换为第四字符串;
144.将第四字符串的部分/全部字符串,拆分为第一子字符串、第二子字符串;
145.第一子字符串为第一子数据,第二子字符串为第二子数据。
146.以下通过具体实施例进行说明。
147.设采用的哈希算法为国密sm3算法,即“gb/t 32905-2016信息安全技术-sm3密码杂凑算法”,该哈希算法输出的哈希值(也可以称为杂凑值)的长度为32字节,即有256比特。
148.设采用sm3算法后,输出的哈希值如下:
149.db8305d7 1a9f2f90 a3e118a9 b49a4c38 1d2b80cf 7bcef819 30f30ab1 832a3c90。
150.需要说明的是,为了便于阅读及说明,上述哈希值是以每8个字符为一组进行的展示,在实际过程中,各组之间并无空格。
151.将预设长度的哈希值的部分/全部,拆分成两个子数据,两个子数据分别为第一子数据,第二子数据,为了便于说明,设随机种子的长度为16字节,那么第一子数据可以为“db8305d7 1a9f2f90 a3e118a9 b49a4c38”,第二子数据可以为“1d2b80cf 7bcef819 30f30ab1 832a3c90”。
152.为了方便程序运行,可以将预设长度的哈希值转换为第四字符串。
153.将第四字符串的部分/全部字符串拆分成两个子字符串,两个子字符串分别为第一子字符串、第二子字符串;
154.第一子字符串为第一子数据,第二子字符串为第二子数据。
155.在实际的使用过程中,根据不同的哈希算法,生成的哈希值的长度各有所不同,但往往是哈希值的长度大于随机种子的长度与随机数的长度之和,如上述中的国密sm3算法,生成的哈希值为256比特的,而生成的256比特并不需要使用全部,可以根据具体场景及实际的需要,从生成的哈希值中截取部分,并从当前所截取部分中拆分出第一子数据、第二子数据即可,若需要所有的哈希值,则根据全部的哈希值,将其拆分为第一子数据、第二子数据,只要确保获得的第二子数据的长度大于等于第一长度即可。
156.以上述实施例中生成的哈希值为例,当第一子数据的长度为8字节时,那么,第一子数据可以为“db8305d7 1a9f2f90”,也可以为“1a9f2f90 a3e118a9”,还可以为“a3e118a9 b49a4c38”,当第二子数据的长度为8字节时,第二子数据可以为“b49a4c38 1d2b80cf”,还可以为“1d2b80cf 7bcef819”,也可以为“30f30ab1 832a3c90”,采用拆分的方式确定第一子数据、第二子数据,可以确保第一子数据、第二子数据中不包含交叠的部分数据,即第一
子数据、第二子数据之间不具有可利用的规律,因为第二子数据可能会被作为随机数进行输出,而若第一子数据若与第二子数据存在部分相同交叠的数据时,对于破译者来说,根据第二子数据中的部分数据确定第一子数据的部分数据后,随机种子被破解的风险会被提高,从而降低了生成随机数的安全性。
157.第一子数据的长度可以与第二子数据长度相同,也可以不同,可以根据实际需要进行设置,此处不进行限定。
158.哈希值生成的长度是固定的,在拆分成两个子数据时,需要确定第二子数据的长度大于等于第一长度即可。
159.第一子数据用于更新随机种子数据,第二子数据用于生成随机数。
160.更新的方式可以根据实际需要进行更新,如可以将第一子数据与原随机种子数据进行异或后的结果作为更新后随机种子数据,也可以通过拼接并截取所需长度的数据并作为更新后的随机种子,还可以将第一子数据与原随机种子通过函数计算获得的结果作为新的随机种子数据,再如,还可以直接将第一子数据作为随机种子进行更新,或对第一子数据截取获得随机种子,对于本领域技术人员而言,可以根据实际需要设置利用第一子数据更新随机种子数据的方式。
161.第二子数据用于生成随机数,可以将第二子数据截取出第一长度的数据作为随机数,也可以通过函数转换的形式,将第二子数据作为函数的输入,将输出的结果截取出第一长度后,获得随机数,对于本领域技术人员而言,可以根据实际需要设置利用第二子数据生成随机数的方式。
162.本发明实施例的技术方案,利用哈希算法产生的哈希值,同时完成了对随机种子数据的更新及随机数的生成,相较于传统的生成随机数的方式来说,不需要通过多次调用加密算法生成随机数后再生成随机种子,不需要基于密钥调用加密算法,节省了系统资源的开销,保证了随机数的安全性及不可预测性的同时,还提高了生成随机数的效率。
163.可选的,作为其中一种实施例,第一子数据用于更新随机种子数据,具体包括:
164.基于当前存储的随机种子数据与第一子数据,生成新的随机种子数据,用新的随机种子数据更新存储的随机种子数据。
165.本发明的实施例在生成新的随机种子数据时,基于当前存储的随机种子数据与第一子数据共同生成的,即使第一子数据被破译者截取,破译者也无法获得新的随机种子,保证了随机种子的安全性,在利用当前的随机种子及第一子数据生成新的随机种子数据后,将新的随机种子数据代替原来的随机种子,保证了随机种子处于动态的随机性中。
166.可选的,作为其中一种实施例,将当前存储的随机种子数据与第一子数据进行异或运算,将运算获得的数据,作为新的随机种子数据;以下通过具体实施例进行说明。
167.若第二运算方式为异或运算时,在确定第一子数据后,根据存储的随机种子数据,与第一子数据采用异或运算方式,生成新的随机种子数据,并将新的随机种子数据保存,完成随机种子的更新。异或运算方式为现有技术中的位运算方式之一,本领域的技术人员可以根据异或运算方式,来完成随机种子的更新。
168.该种更新方式,综合考虑了原随机种子,及由哈希算法生成的从中截取的第一子数据的随机性,哈希算法的安全性得到了论证,因此,破译者由哈希算法生成的部分哈希值,难以推断从哈希值中截取出的数据片段。作为第一子数据同样对于破译者来说无法获
取,因此,将第一子数据与原随机种子进行异或时,破译者无法有效的猜测第一子数据,更无从下手获得随机种子数据,因此,该种方式,生成随机种子的安全性很高,满足了生成随机种子的安全性要求。
169.可选的,作为其中一种实施例,将当前存储的随机种子数据与第一子数据进行拼接,获得临时拼接数据;并根据当前存储的随机种子数据的长度,从临时拼接数据中截取出相同长度且与当前存储的随机种子数据不完全相同的数据,作为新的随机种子数据。
170.以下通过具体实施例进行说明。
171.将当前存储的随机种子数据与第一子数据进行拼接,获得临时拼接数据即将此前已经存储的随机种子数据与第一子数据通过拼接的方式,获得临时拼接数据,拼接的方式可以为随机种子在前,第一子数据在后,也可以为第一子数据在前,随机种子在后,此处不进行限定。
172.当获得临时拼接数据后,从新的拼接数据中截取出与存储的随机种子长度一致的数据做为新的随机种子。
173.以上述实施例为例,设随机种子数据为“edsgewt4”,第一子数据为“db8305d71a9f2f90a3e118a9b49a4c38”,通过拼接,确定临时拼接数据为“edsgewt4db8305d71a9f2f90a3e118a9b49a4c38”,那么,根据自行定义的截取方式,可以从当前种子数据长度后的第一位开始截取,截取与种子数据长度一致的数据作为新的随机种子数据,如新的随种子数据为“db8305d7”,也可以根据当前临时拼接数据中最低端为最后一位,向前截取与所述随机种子相同长度的数字,获得新的随机种子为“b49a4c38”,当然也可以从中间截取出一段与种子数据长度一致的数据作为随机种子,本领域技术人员可以根据实际需要进行设置,只要确保新的随机种子与原来存储的随机种子数据不同即可。
174.可选的,作为其中一种实施例,从当前存储的随机种子数据及第一子数据中分别选取一部分数据,并将选取的各数据重新排列组合,作为新的随机种子数据;其中,被选取数据的总长度与当前存储的随机种子数据的长度相同。
175.以下通过具体实施例进行说明。
176.继续以上述实施例为例,设随机种子数据为“edsgewt4”,第一子数据为“db8305d71 a9f2f90a3e118a9b49a4c38”,从当前的随机种子及第一子数据分别选取一部分数据,选取的方式可以自行定义,如可以将随机种子与第一子数据拼接后获得临时拼接数据“edsgewt4db8305d71a9f2f90a3e118a9b49a4c38”,以奇数为选择,选取出与原随机种子数据相同长度的数据做为新的种子数据,即确定新的随机种子数据为“esetd80d”,也可以为偶数为选择,选取出与原随机种子数据相同长度的数据做为新的种子数据,即确定新的随机种子数据为“dgw4b35d”,也可以从当前的随机种子中选出前几位做为新的随机种子的前位,及从第一子数据中选择前几位作为随机种子的后位,如从原随机种子中选择前4位,及从第一子数据中选择前4位,形成新的随机种子为“edsgdb83”,本领域技术人员可以根据实际情况,将选取的各数据重新排列组合,作为新的随机种子数据。
177.需要注意的是,以上随机种子数据仅是举例,不代表限定,在实际的应用过程中,随机种子通常设置为16字节至32字节甚至更高,以获得更好的混乱度,此处种子数据仅仅是作为举例,用以表达确定新的随机种子的过程。
178.可选的,作为其中一种实施例,第二子数据用于生成随机数,具体包括:
179.从第二子数据中截取出长度与第一长度相同的数据作为随机数。
180.以下通过具体实施例进行说明。
181.以上述实施例为例,设确定的第二子数据为“b49a4c38 1d2b80cf”,长度为8字节,若第一长度的随机数也为8字节时,将第二子数据作为随机数输出,也可以理解为截取的长度与第一长度相同,若第一长度的随机数为7字节时,从8字节的第二子数据中截取出7字节,并作为随机数输出,截取规则的具体方式本领域技术人员可以自行定义,如从第几位起开始截取以满足第一长度要求即可,此处不限定。
182.可选的,作为其中一种实施例,本发明实施例还提供了一种随机数生成装置300,见附图3所示,该装置300包括:
183.获取模块301,用于对实时采集的环境数据进行处理,获得环境样本数据,根据环境样本数据及预设函数,生成第一临时数据;还用于,获取存储单元中存储的随机种子数据,基于随机种子数据及第一临时数据,确定出第二临时数据,根据第二临时数据及预设的哈希算法,获得预设长度的哈希值;
184.生成模块302:用于根据获取模块301获得的哈希值,更新随机种子数据,并生成第一长度的随机数;
185.其中,预设长度大于第一长度。
186.可选的,作为其中一种实施例,基于随机种子数据及第一临时数据,确定出第二临时数据,具体包括:
187.将随机种子数据、第一临时数据,拼接为第二临时数据。
188.可选的,作为其中一种实施例,将随机种子数据、第一临时数据,拼接为第二临时数据,具体包括:
189.将随机种子数据转换为第一字符串;
190.将第一临时数据转换为第二字符串;
191.将第一字符串与第二字符串进行拼接,获得第三字符串;
192.第三字符串为第二临时数据。
193.可选的,作为其中一种实施例,根据预设长度的哈希值,更新随机种子数据,并生成第一长度的随机数,具体包括:
194.取预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,其中,第二子数据的长度大于等于第一长度;
195.第一子数据用于更新随机种子数据,第二子数据用于生成随机数。
196.可选的,作为其中一种实施例,取预设长度的哈希值的部分/全部,拆分为第一子数据、第二子数据,具体包括:
197.将预设长度的哈希值转换为第四字符串;
198.将第四字符串的部分/全部字符串,拆分为第一子字符串、第二子字符串;
199.第一子字符串为第一子数据,第二子字符串为第二子数据。
200.可选的,作为其中一种实施例,第一子数据用于更新随机种子数据,具体包括:
201.基于当前存储的随机种子数据与第一子数据,生成新的随机种子数据,用新的随机种子数据更新当前存储的随机种子数据。
202.可选的,作为其中一种实施例,基于当前存储的随机种子数据与第一子数据,生成
新的随机种子数据,具体包括:
203.将当前存储的随机种子数据与第一子数据进行异或运算,将运算获得的数据,作为新的随机种子数据;或者
204.将当前存储的随机种子数据与第一子数据进行拼接,获得临时拼接数据;并根据当前存储的随机种子数据的长度,从临时拼接数据中截取出相同长度且与当前存储的随机种子数据不完全相同的数据,作为新的随机种子数据;或者
205.从当前存储的随机种子数据及第一子数据中分别选取一部分数据,并将选取的各数据重新排列组合,作为新的随机种子数据;其中,被选取数据的总长度与当前存储的随机种子数据的长度相同。
206.可选的,作为其中一种实施例,第二子数据用于生成随机数,具体包括:
207.从第二子数据中截取出长度与第一长度相同的数据作为随机数。
208.可选的,作为其中一种实施例,还提供了一种电子设备400,如附图4所示,包括:处理器401和存储器402;
209.所述处理器401用于调用所述存储器402中存储的程序,当所述程序被执行时,使得处理器401执行上述实施例中任一项所述的方法。
210.可选的,作为其中一种实施例,还提供一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述实施例中任一项所述的方法。
211.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
212.本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
213.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
214.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
215.显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1