CN110399118B - 一种随机数生成方法、装置、存储介质及电子设备 - Google Patents
一种随机数生成方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN110399118B CN110399118B CN201910635804.1A CN201910635804A CN110399118B CN 110399118 B CN110399118 B CN 110399118B CN 201910635804 A CN201910635804 A CN 201910635804A CN 110399118 B CN110399118 B CN 110399118B
- Authority
- CN
- China
- Prior art keywords
- data
- value
- entropy
- random number
- data pool
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本申请实施例公开了一种随机数生成方法、装置、存储介质及服务器,其中,方法包括:获取所采集的环境样本数据,获取环境样本数据对应的第一熵值,获取数据池中各状态寄存器的初始状态值,基于初始状态值、环境样本数据以及第一熵值,得到数据池的第二熵值,当第二熵值大于预设阈值时,生成预设长度的目标数据,获取数据池中各状态寄存器的当前状态值,基于目标数据以及当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的数据池中各状态寄存器的状态值生成随机数。采用本申请实施例,可以产生随机性高的随机数,提高了随机数的安全性。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种随机数生成方法、装置、存储介质及电子设备。
背景技术
随着计算机系统和通信技术的快速发展,信息的安全性对于人们来说也越来越重要,通常为了提高信息的安全性,需要对信息进行加密,且通常采用随机数进行加密。因此,生成一个高质量的随机数对于信息加密至关重要。
目前,一般采用软件算法生成随机数。而现有的软件算法是以时间作为数据源,采用数学运算等方式产生随机数。这种算法因为以时间作为数据源而易被模拟或攻克,从而导致所生成的随机数的随机性较低,进而降低了生成随机数的安全性。
发明内容
本申请实施例提供了一种随机数生成方法、装置、存储介质及电子设备,可以产生随机性高的随机数,提高了生成随机数的安全性。所述技术方案如下:
第一方面,本申请实施例提供了一种随机数生成方法,所述方法包括:
获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值;
获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值;
当所述第二熵值大于预设阈值时,生成预设长度的目标数据;
获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
第二方面,本申请实施例提供了一种随机数生成装置,所述装置包括:
数据获取模块,用于获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值;
第二熵值确定模块,用于获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值;
目标数据生成模块,用于当所述第二熵值大于预设阈值时,生成预设长度的目标数据;
随机数生成模块,用于获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
第三方面,本申请实施例提供一种计算机存储介质,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行上述的所述的随机数生成方法。
第四方面,本申请实施例提供一种电子设备,可包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行上述的所述的随机数生成方法。
本申请一些实施例提供的技术方案带来的有益效果至少包括:
在本申请一个或多个实施例中,随机数生成装置获取所采集的环境样本数据以及所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,生成预设长度的目标数据,然后获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,从而可根据更新后的所述数据池中各状态寄存器的状态值生成随机数。通过以环境样本数据为数据源对数据池进行更新,从更新后的数据池中基于随机产生的目标数据以及各状态寄存器的状态值生成随机数,所生成的随机数的随机性较高,从而可以提高生成随机数的安全性。同时不需要使用单独的硬件随机数模块,可以降低硬件成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种随机数生成的场景架构示意图;
图2是本申请实施例提供的一种随机数生成方法的流程示意图;
图3是本申请实施例提供的另一种随机数生成方法的流程示意图;
图4是本申请实施例提供的随机数生成方法涉及的一种数据池的场景图;
图5是本申请实施例提供的随机数生成方法涉及的另一种数据池的场景图;
图6是本申请实施例提供的随机数生成方法涉及的输出随机数的场景图;
图7是本申请实施例提供的一种随机数生成装置的结构示意图;
图8是本申请实施例提供的一种第二熵值确定模块的结构示意图;
图9是本申请实施例提供的一种随机数生成模块的结构示意图;
图10是本申请实施例提供的另一种随机数生成装置的结构示意图;
图11是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其他步骤或单元。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
下面结合具体的实施例对本申请进行详细说明。
请参见图1,为本申请实施例提供的一种随机数生成装置的架构示意图。如图1所示,所述随机数生成装置130可以包含信息采集设备100、处理器110、数据池120。
所述随机数生成装置130可以是具有随机数生成功能的电子设备,该电子设备包括但不限于:智能手机、智能平板、个人电脑、车载设备、计算设备或连接到无线调制解调器的其它处理设备等。在不同的场景中随机数生成装置可以叫做不同的名称,例如:用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置、蜂窝电话、无绳电话、个人数字处理(personaldigital assistant,PDA)、5G网络或未来演进网络中的终端设备等。
所述信息采集设备100可以是集成在随机数生成装置130上具备采集环境信息功能的电子部件,该电子部件包括但不限于:加速度传感器、磁力传感器、陀螺仪、麦克风、听筒、物理量感应器或连接到无线调制解调器的其它信息采集部件等。所述信息采集设备100也可以是采用多个信息采集设备组成的信息采集设备集群。所述信息采集设备集群中的各信息采集设备可以是以对称方式组成的,其中每个信息采集设备在通信链路中功能等价、地位等价,各信息采集设备可以是以并行的方式统一对外提供数据存储服务,各信息采集设备还可以单独对外提供信息采集服务,所述单独提供信息采集服务可以理解为无需另外的信息采集设备的辅助。
所述处理器110可以是集成在随机数生成装置130上具有执行控制指令、数据处理等功能的电子部件。
所述数据池120可以是集成在随机数生成装置130上用于储存信息的电子部件,通常是将信息数字化处理后再利用电、磁、或光学等方式的媒体加以存储。例如:利用电能方式存储信息的各式存储器(RAM、ROM等)、利用光学方式存储信息的CD/DVD、利用多个寄存器组成的数据储存设备等。
信息采集设备100采集环境信息,将采集的环境信息转化为环境样本数据发送至处理器110处理。
所述环境信息可以是加速度信息、地理位置信息、磁力信息、角度信息、声音信息等环境信息,所述环境信息在任一时刻具有不确定性、不可预知性、和不可攻击性。
所述环境样本数据可以理解为在对所述环境信息进行信息处理之后,转化为处理器110可识别的环境样本数据,所述环境样本数据可以是数字、比特、字节、符号等表征形式。
在本实施例中所述信息采集设备100可以是指多个相同或不同的信息采集设备,例如加速度传感器、陀螺仪、磁力传感器、声音采集装置等。
所述信息采集设备100可以采集当前环境中的环境信息(声音、角度信息、加速度参数等),所述环境信息可以是包括但不限于下述的各类型的表现形式:
例如:所述环境信息可以是信息采集设备100-陀螺仪采集当前环境下角加速度数据、可以是信息采集设备100-加速度传感器采集的当前环境下加速度数值、可以是信息采集设备100-磁力传感器采集的当前环境下的环境磁场数据(磁北、真北、磁偏角等)、还可以是信息采集设备100-声音采集装置采集的当前环境下的音频数据(音高、音强、音长)等等。
具体的,信息采集设备100在采集到当前环境下的环境信息之后,需要对所述环境信息进行信息处理,所述信息处理可以是对采集的环境信息进行采样、量化、编码处理,可以是对采集的环境信息进行分帧、时/频域变换提取特征等信息处理得到环境样本数据。
例如:以所述信息采集设备100-声音采集装置进行说明,声音采集装置采集到当前环境中的音频数据,所述音频数据实际上是一种信息波,声音采集装置对所述信息波进行预处理(滤波、放大等处理),同时对所述信息波进行分帧,然后对分帧后的信息波作时/频域变换提取特征等处理,在经过上述过程之后所述音频数据就转化为环境样本数据。
需要说明的是,所述信息处理的方式有很多,可以是上述的一种或多种,此处不作具体限定。
所述信息采集设备100将所述样本数据发送至处理器110处理,可以是将所述样本数据实时发送至处理器110,还可以是将所述样本数据基于一定的时间周期或频率按时发送至处理器110。
处理器110获取信息采集设备100采集的环境样本数据,获取所述环境样本数据对应的第一熵值。
所述熵值可以理解为对不确定性或随机性的一种度量,通过计算熵值可以知道一个事件的随机性及无序程度。所述第一熵值在本实施例中可以理解为用来表征所述环境样本数随机性及无序程度的度量值,其第一熵值的数值是所述环境样本数据能产生真随机数的位数,通常以比特为单位。
处理器110获取数据池120中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,计算得到所述数据池120的第二熵值。
所述状态寄存器是指有限存贮容量的高速存贮部件,可以用来储存指令、数据和地址。所述状态寄存器的初始状态值可以理解为状态寄存器在初始化之后状态寄存器中每一位的值,通常在对数据池120进行相关操作(读取、存储等)需要先对数据池120中各状态寄存器进行初始化,所述第二熵值可以理解为数据池120的总熵值。
所述处理器110将所述环境样本数据与所述数据池120中各状态寄存器的初始状态值进行拼接,得到第一拼接序列,然后计算所述第一拼接序列的第一摘要,所述摘要通常是指通过摘要算法将任意长度的输入数据转化为固定长度的输出数据。所述第一摘要可以理解为采用摘要算法对第一拼接序列进行计算得到的摘要。
所述处理器110采用移位方式将所述第一摘要添加至所述数据池中,获取所述数据池120的历史熵值,所述历史熵值可以理解为所述数据池的上一状态的总熵值,然后基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,处理器110生成预设长度的目标数据。所述预设阈值是指某一领域、状态或系统的门限值,也称临界值。在本实施例中所述预设阈值是指生成随机数的熵值。
处理器110获取所述数据池120中各状态寄存器的当前状态值,将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列。所述第二拼接序列在本实施例中可以理解为所述目标数据与所述当前状态值进行拼接得到的数据序列,即第二拼接序列。
处理器110计算所述第二拼接序列的第二摘要,采用移位方式将所述第二摘要添加至所述数据池120中。处理器110获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值,将所述目标状态值中前预设个数数值确定为随机数。
在本申请实施例中,随机数生成装置获取所采集的环境样本数据以及所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,生成预设长度的目标数据,然后获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,从而可根据更新后的所述数据池中各状态寄存器的状态值生成随机数。通过以环境样本数据为数据源对数据池进行更新,从更新后的数据池中基于随机产生的目标数据以及各状态寄存器的状态值生成随机数,所生成的随机数的随机性较高,从而可以提高生成随机数的安全性。同时不需要使用单独的硬件随机数模块,可以降低硬件成本。
在一个实施例中,如图2所示,特提出了一种随机数生成方法,该方法可依赖于计算机程序实现,可运行于基于冯诺依曼体系的随机数生成装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行。具体的,该随机数生成方法包括:
步骤101:获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值。
所述环境样本数据可以理解为将环境信息经处理后得到的环境样本数据,通常环境信息可以是自然环境中的信息(温度、湿度、声音等物理信息),还可以是来自系统环境的信息,例如:设备两次中断间的间隔、输入设备的操作时间间隔,连续磁盘操作的时间间隔、物理按键的按下间隔、内部电路的电信号变化等,所述环境样本数据可以是数字、比特、字节、符号等表征形式。
所述熵值可以理解为对不确定性或随机性的一种度量,通常以比特为单位。通过计算熵值可以知道一个事件的随机性及无序程度。所述计算熵值是计算熵的估计值,通常采用计算熵的估计值的方法来对数据随机性进行评估。所述第一熵值在本实施例中可以理解为用来表征所述环境样本数随机性及无序程度的度量值,所述第一熵值是所述环境样本数据能产生真随机数的位数,第一熵值越大,所述环境样本数据的有序性越差,即随机性或不确定性越大。
具体的,随机数生成装置获取所采集的环境样本数据,所述获取环境样本数据的方式可以是基于存储器共享、消息传递、请求应答、令牌传递、信令传递以及以无线或有线网络等方式向信息采集设备获取的。
在本实施例中所述信息采集设备可以理解为智能终端(手机、电脑、平板等)上的信息采集部件。
在一种可行的实施方式中,随机数生成装置可以向信息采集设备发送采集环境信息的指令,所述信息采集设备接收到所述指令并作出响应,通过执行所述“采集环境信息”的控制逻辑对应的机器可执行指令,开启“采集环境信息”的功能,采集当前环境下的环境信息(加速度信息、地理位置信息、磁力信息、角度信息、声音信息等环境信息)。
其中,在随机数生成装置通过信息采集设备采集环境信息时,可以是一个或多个信息采集设备同时采集的环境信息。在对采集的环境信息进行信息处理之后,得到环境信息对应的环境样本数据,所述多个信息采集设备将采集的环境样本数据发送至随机数生成装置。随机数生成装置对来自多个信息采集设备的环境样本数据进行封装,所述封装可以理解为封装成固定字节的环境样本数据。
所述封装方式可以是对多个环境样本数据进行串接,可以是基于压缩规则对多个环境样本数据进行压缩,可以是基于运算规则(异或与运算、哈希运算等)对多个环境样本数据进行运算等。
可选的,所述随机数生成装置获取所采集的环境样本数据及获取所述环境样本数据对应的第一熵值的顺序不分先后,可以是同时进行。
具体的,所述随机数生成装置采用预设的熵值算法,对封装之后的所述环境样本数据进行计算,得到所述环境样本数据对应的第一熵值。所述熵值算法多基于香农熵计算公式改进或修正确定,可以是基于多项式逼近法的熵值计算算法,可以是基于函数拟合的熵值计算算法,可以是基于对数常态分布的熵值计算算法等。
可选的,信息采集设备在采集所述环境样本数据时,可以预先计算环境样本数据的第一熵值,然后将环境样本数据和环境样本数据对应的第一熵值同时发送至随机数生成装置。
在一种可行的实施方式中,所述第一熵值还可以是由熵值权重模型得到的。通过预先获取大量环境样本数据,提取特征信息,所述特征信息包含环境样本数据的数据源的熵权重、环境样本数据的字节数、数据冗余度参数,创建熵值权重模型,将所述特征信息输入至所述熵值权重模型中,得到训练后的熵值权重模型。
可选的,所述熵值权重模型可以是如下的形式:
e=min(wi*li/m,32*8)
其中,e为环境样本数据的熵值即第一熵值,min()表示最小值函数,wi为数据源的熵权重,li环境样本数据的字节数,m为数据冗余度参数。
可选的,建立所述熵值权重模型之后,还包含对所述熵值权重模型中的模型参数(wi、m)进行校正。
在一种可行的实施方式中,所述对所述熵值权重模型中的模型参数(wi、m)进行校正,可以是根据至少一组样本数据组各自对应的计算损失,采用误差反向传播算法对所述模型参数进行修正。
具体对经熵值权重模型得到的训练结果和已标注的样本数据结果进行比较,得到计算损失,计算损失用于指示训练结果与数据结果之间的误差。
计算损失通过交叉熵(cross-entropy)来表示,预先通过下述公式计算损失(p,q):
其中,p(x)和q(x)是长度相等的离散分布向量,p(x)表示表示训练结果,q(x)表示输出参数,x为训练结果或输出参数中的一个向量。
通过反向传播算法根据计算损失确定熵值权重模型的梯度方向,从熵值权重模型的输出层逐层向前更新熵值权重模型中的模型参数,完成对所述模型参数进行修正。
步骤102:获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值。
所述状态寄存器是指有限存贮容量的高速存贮部件,可以用来储存指令、数据和地址。所述状态寄存器的初始状态值可以理解为状态寄存器在初始化之后状态寄存器中每一位的值,所述状态值可以理解为基于进位基数制(二进制、十进制、十六进制等)每一位的数值、字母、字符串等。通常在对数据池进行相关操作(读取、存储等)需要先对数据池中各状态寄存器进行初始化,所述第二熵值可以理解为数据池的总熵值。
具体的,所述随机数生成装置对数据池中各状态寄存器的每一位赋初值,完成数据池的初始化。当随机数生成装置获取到环境样本数据时,获取数据池中各状态寄存器的初始状态值,并基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值。
可选的,所述随机数生成装置对数据池中各状态寄存器的每一位赋初值,可以是基于预设初始算法通过计算得到初始数据,然后基于所述初始数据对所述数据池中各状态寄存器的每一位赋初值;可以是基于预设的至少一个初始数据集合通过筛选,选择所述至少一个初始数据集合的一个目标初始数据,然后基于所述目标初始数据对所述数据池中各状态寄存器的每一位赋初值;可以是基于随机数生成装置的设备信息(MAC地址、IP地址、数字证书和id等信息)得到初始数据,然后基于所述初始数据对所述数据池中各状态寄存器的每一位赋初值等。
需要说明的是,所述完成数据池的初始化方式有很多,可以是上述的一种或多种,此处不作具体限定。
可选的,所述随机数生成装置获取数据池中各状态寄存器的初始状态值之后,将所述环境样本数据、所述初始状态值作为预设摘要算法的输入,输出计算后的摘要。所述摘要算法包括但不限于MD消息摘要算法、哈希算法、SM3杂凑算法等,所述摘要通常是指通过摘要算法将任意长度的输入数据转化为固定长度的输出数据。
可选的,所述随机数生成装置可以将所述环境样本数据、所述初始状态值进行组合,所述组合可以是将所述环境样本数据、所述初始状态值进行拼接、可以是将所述环境样本数据插入至所述初始状态值、可以是将所述环境样本数据、所述初始状态值进行压缩等,得到组合后的数据,然后将所述组合后的数据作为输入,得到计算后的摘要。
具体的,所述随机数生成装置将所述摘要放入数据池中,然后获取所述数据池的历史熵值,所述历史熵值可以理解为所述数据池的上一状态的熵值(将所述摘要放入数据池之前的数据池的熵值),基于第一熵值、所述历史熵值通过计算可以得到放入所述摘要之后的数据池的总熵值,即第二熵值。
步骤103:当所述第二熵值大于预设阈值时,生成预设长度的目标数据。
所述预设阈值是指某一领域、状态或系统的门限值,也称临界值。在本实施例中所述预设阈值是指生成随机数的熵值,所述随机数的熵值可以根据生成随机数的字节数经数学计算得到。
具体的,所述预设熵值可以是经下式数学计算得到的:
E'=N*8
其中,E'为预设熵值,N为生成随机数的字节数。
所述预设长度的目标数据是指预设的固定字节数的目标数据。所述目标数据可以是随机数生成装置生成的固定字节数的数字、比特、字节、符号等数据。
具体的,所述随机数生成装置上的“生成随机数”的指令被触发之后,随机数生成装置基于生成随机数的字节数,计算生成随机数需要的熵值,将所述熵值作为预设熵值。然后获取采集的所述环境样本数据,对所述环境样本数据处理后放入数据池中。然后判断所述数据池的第二熵值是否大于预设阈值,
具体的,当所述数据池的第二熵值小于预设阈值时,执行获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值的步骤。
具体的,当所述数据池的第二熵值大于预设阈值时,随机数生成装置可以是基于生成目标数据的算法,通过计算得到的预设长度的目标数据。所述算法可以是线性同余算法、反馈移位寄存器法、斐波那契法等算法中的一种或多种拟合的方式,此处不作具体限定。
可选的,随机数生成装置生成预设长度的目标数据,可以是基于预先设置的目标数据集合通过筛选选择所述至少一个目标数据集合的一个目标数据生成的预设长度的目标数据,可以是基于当前时间生成的预设长度的目标数据,可以是基于随机数生成装置或搭载随机数生成装置的智能终端的设备信息(MAC地址、IP地址、数字证书和id等信息)生成的预设长度的目标数据等等。
可选的,当所述数据池的第二熵值大于预设阈值时,随机数生成装置获取当前的环境样本数据的,基于所述环境样本数据生成预设长度的目标数据。
具体的,当所述第二熵值大于预设阈值时,所述随机数生成装置可以计算所述第二熵值与所述预设阈值的差值,将所述差值作为历史熵值进行保存。
具体的,随机数生成装置在输出随机数时,计算所述第二熵值与预设阈值的差值,所述差值可以是经下式数据计算的得到的:
E=E-E'
其中,E为第二熵值,E'为预设熵值。
所述随机数生成装置将所述差值作为所述数据池的历史熵值进行保存,以便随机数生成装置在下一次随机数生成时,可以获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。
步骤104:获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
所述当前状态值可以理解为当前状态下状态寄存器中每一位的值,通常在对数据池中的数据进行相关操作(读取、存储、删减等)时,数据池中各状态寄存器的状态值会随之发生变化,所述状态值可以理解为基于进位基数制(二进制、十进制、十六进制等)每一位的数值、字母、字符串等。
具体的,随机数生成装置获取所述数据池中各状态寄存器的当前状态值,将所述目标数据、所述各状态寄存器的当前状态值进行组合,所述组合可以是将所述目标数据、所述各状态寄存器的当前状态值进行拼接、可以是将所述目标数据插入至各状态寄存器的当前状态值、可以是将所述目标数据、所述各状态寄存器的当前状态值进行折叠、可以是将所述目标数据、所述各状态寄存器的当前状态值进行压缩等,得到组合后的数据,然后采用摘要算法将所述组合后的数据作为输入,得到计算后的摘要。将所述计算后的摘要放入数据池中,然后对所述数据池中各状态寄存器的状态值进行更新,基于生成随机数的字节数,从所述数据池中输出相应字节数的随机数。
可选的,所述摘要算法包括但不限于MD消息摘要算法、哈希算法、SM3杂凑算法等,所述摘要通常是指通过摘要算法将任意长度的输入数据转化为固定长度的输出数据,例如将256比特的数据转化为64比特的数据。
在本申请实施例中,随机数生成装置获取所采集的环境样本数据以及所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,生成预设长度的目标数据,然后获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,从而可根据更新后的所述数据池中各状态寄存器的状态值生成随机数。通过以环境样本数据为数据源对数据池进行更新,从更新后的数据池中基于随机产生的目标数据以及各状态寄存器的状态值生成随机数,所生成的随机数的随机性较高,从而可以提高生成随机数的安全性。同时不需要使用单独的硬件随机数模块,可以降低硬件成本。
请参见图3,图3是本申请提出的一种随机数生成方法的另一种实施例的流程示意图。具体的:
步骤201:获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值。
具体可参见步骤101,此处不再赘述。
步骤202:获取数据池中各状态寄存器的初始状态值,将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,得到第一拼接序列。
具体的,所述随机数生成装置对数据池中各状态寄存器的每一位赋初值,完成数据池的初始化。当随机数生成装置获取到环境样本数据时,获取数据池中各状态寄存器的初始状态值。
可选的,所述随机数生成装置对数据池中各状态寄存器的每一位赋初值,可以是基于预设初始算法通过计算得到初始数据,然后基于所述初始数据对所述数据池中各状态寄存器的每一位赋初值;可以是基于预设的至少一个初始数据集合通过筛选选择所述至少一个初始数据集合的一个目标初始数据,然后基于所述目标初始数据对所述数据池中各状态寄存器的每一位赋初值;可以是基于随机数生成装置的设备信息(MAC地址、IP地址、数字证书和id等信息)得到初始数据,然后基于所述初始数据对所述数据池中各状态寄存器的每一位赋初值等。
需要说明的是,所述完成数据池的初始化方式有很多,可以是上述的一种或多种,此处不作具体限定。
具体的,随机数生成装置将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,得到第一拼接序列。
可选的,将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,所述拼接方式可以是将所述环境样本数据包括的第一比特与所述数据池的数据包括的最后一比特进行拼接,可以是将所述数据池的数据最后一比特与所述环境样本数据的第一比特进行拼接,可以是将所述环境样本数据拆分为多个子样本数据,将所述多个子样本数据放入数据池的至少一个状态寄存器等等。
在一种可行的实施方式中,随机数生成装置将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,所述拼接方式可以是将所述环境样本数据包括的第一比特与所述数据池的数据包括的最后一比特进行拼接,所述拼接如下式所示:
t=Dj||S0||S1...||Sn
其中,t为第一拼接序列,Dj为环境样本数据,S0…Sn为数据池中各寄存器的状态值,S0||S1...||Sn表示数据池的拼接序列,S0的最后一比特可以理解为所述数据池的数据包括的最后一比特。
所述随机数生成装置将所述环境样本数据包括的第一比特与所述数据池的数据包括的最后一比特按照上式所示进行拼接之后,得到拼接之后的拼接序列t,即第一拼接序列。
步骤203:计算所述第一拼接序列的第一摘要,采用移位方式将所述第一摘要添加至所述数据池中。
所述摘要可以理解为通过摘要算法将任意长度的输入数据转化为固定长度的输出数据。在本实施例中所述第一摘要可以理解为基于预设摘要算法通过计算所述第一拼接序列得到的摘要,即第一摘要。
具体的,随计数发生器采用预设摘要算法对第一拼接序列经过填充、迭代压缩、生成杂凑值等过程,得到所述第一摘要。
可选的,所述摘要算法可以是MD消息摘要算法(MD2、MD4、MD5)、可以是哈希算法、可以是SM3杂凑算法等。
例如,随机数生成装置将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,所述拼接方式可以是将所述环境样本数据包括的第一比特与所述数据池的数据包括的最后一比特进行拼接,得到第一拼接序列,将所述第一拼接序列输入下式中:
S-1=SM3(t)
其中,S-1为摘要,SM3()为摘要算法,t为拼接序列。
随计数发生器采用SM3摘要算法对第一拼接序列经过填充、迭代压缩、生成杂凑值等过程,得到所述S-1,即第一摘要。
步骤204:获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。
具体的,所述随机数生成装置采用移位方式将所述第一摘要添加至所述数据池中。所述移位方式可以理解为按照平移方向和填充数字规则将寄存器中的每一位的值进行平移,在平移的过程低位移出(即数值舍弃),高位的空位按照移位规则对应每一位补充数值。当所述平移方向为右移时,右边为低位,左边为高位。在本实施例中可以理解为,高位的空位补充所述摘要的数值。
具体的,所述随机数生成装置获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。所述历史熵值可以理解为数据池上一状态的总熵值,所述第二熵值为所述数据池的当前状态的总熵值。
可选的,所述第二熵值可以是由如下公式计算得到:
E=min(E-1+e,Emax)
其中,E为数据池的当前状态的总熵值即第二熵值,min()表示最小值函数,e为环境样本数据的熵值即第一熵值,Emax为数据池能容纳的最大熵值。
所述随机数生成装置将所述第一熵值以及所述历史熵值输入到上式中,计算得到所述数据池的当前状态的总熵值即第二熵值。
步骤205:当所述第二熵值大于预设阈值时,生成预设长度的目标数据。
具体可参见步骤103,此处不再赘述。
步骤206:获取所述数据池中各状态寄存器的当前状态值,将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列。
所述当前状态值可以理解为当前状态下状态寄存器中每一位的值,通常在对数据池中的数据进行相关操作(读取、存储、删减等)时,数据池中各状态寄存器的状态值会随之发生变化,所述状态值可以理解为基于进位基数制(二进制、十进制、十六进制等)每一位的数值、字母、字符串等。
所述第二拼接序列在本实施例中可以理解为所述目标数据与所述当前状态值进行拼接得到的数据序列,即第二拼接序列。
具体的,随机数生成装置获取所述数据池中各状态寄存器的当前状态值,将所述目标数据、所述各状态寄存器的当前状态值进行拼接,得到第二拼接序列。
可选的,将所述目标数据与所述数据池中各状态寄存器的当前状态值进行拼接,所述拼接方式可以是将所述目标数据包括的第一比特与所述数据池的数据包括的最后一比特进行拼接,可以是将所述数据池的数据最后一比特与所述目标数据的第一比特进行拼接,可以是将所述目标数据拆分为多个子目标数据,将所述多个子目标数据放入数据池的至少一个状态寄存器等等。
在一种可行的实施方式中,随机数生成装置将所述目标数据与所述数据池中各状态寄存器的当前状态值进行拼接,所述拼接方式可以是将所述目标数据包括的第一比特与所述数据池的数据包括的最后一比特进行拼接,所述拼接如下式所示:
u=r||S0||S1...||Sn
其中,u为第二拼接序列,r为目标数据,S0…Sn为数据池中各寄存器的状态值,S0||S1...||Sn表示数据池的拼接序列,S0的最后一比特可以理解为所述数据池的数据包括的最后一比特。
所述随机数生成装置将所述目标数据包括的第一比特与所述数据池的数据包括的最后一比特按照上式所示进行拼接之后,得到拼接之后的拼接序列u,即第二拼接序列。
步骤207:计算所述第二拼接序列的第二摘要,采用移位方式将所述第二摘要添加至所述数据池中。
所述第二摘可以理解为基于预设摘要算法通过计算所述第一拼接序列得到的摘要,即第二摘要。
其中,所述摘要算法可以是MD消息摘要算法(MD2,MD4,MD5),所述MD消息摘要算法可以将任意长度的拼接队列经分割、赋值、循环计算等过程输出一个128比特的摘要;可以是SM3杂凑算法,所述MD消息摘要算法可以将任意长度的拼接队列经填充和迭代压缩,生成杂凑值等过程,得到256比特的摘要;还可以是哈希算法、安全散列算法等等。
在本实施例中所述摘要算法可以是SM3杂凑算法,随计数发生器采用SM3杂凑算法对第二拼接序列经过填充、迭代压缩、生成杂凑值等过程,得到所述第二摘要,采用移位方式将所述第二摘要添加至所述数据池中。
在一种可行的实施方式中,所述数据池中各状态寄存器的组成结构可以是如图4所示的并行结构,所述并行结构可以理解为所述数据池中各状态寄存器中的状态值独立存储,所述随机数生成装置在采用移位方式将所述第二摘要添加至所述数据池时,可以是先从数据池各状态寄存器中确定一个状态寄存器,然后按照预设移位规则,将所述第二摘要采用移位的方式对确定的所述状态寄存器的当前状态值进行平移,即对确定的所述状态寄存器中的每一位的值进行平移,在平移的过程低位移出(即数值舍弃),高位的空位补充所述第二摘要的数值。
可选的,所述从各状态寄存器中确定一个状态寄存器的方式可以是基于目标状态寄存器的数据保存时间来选取,随机数生成装置获取数据池中各状态寄存器数据的保存时间,从所述各状态寄存器数据的保存时间中选取所述保存时间距离当前时间最长的状态寄存器数据作为确定的状态寄存器。
可选的,所述从各状态寄存器中确定一个状态寄存器的方式可以是基于各状态寄存器中状态值的熵值确定的,具体将所述熵值最小的状态寄存器作为确定的所述状态寄存器。
在一种可行的实施方式中,所述数据池中各状态寄存器存储数据的组成结构可以是如图5所示的串行结构,所述串行结构可以理解为所述数据池中各状态寄存器中的数据串行存储,即两两相邻的状态寄存器的第一状态寄存器的状态值包括的第一比特与第二个状态寄存器包括的最后一比特进行连接,则数据池中各状态寄存器中的状态值组成如图5所示的数据序列,所述随机数生成装置在采用移位方式将所述第二摘要添加至所述数据池时,将所述第二摘要采用移位的方式对所述数据序列进行平移,即对目标状态寄存器中的每一位的值进行平移,在平移的过程低位移出(即数值舍弃),高位的空位补充所述第二摘要的数值。
步骤208:获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值,将所述目标状态值中前预设个数数值确定为随机数。
所述目标状态寄存器可以理解为基于输出规则预先选择的状态寄存器,所述输出规则可以是基于各状态寄存器的状态值保存的时间、可以是基于各状态寄存器的输出优先级、可以是基于各状态寄存器的熵值大小等等。所述目标状态值可以理解为所述目标状态寄存器的当前状态值。
所述预设个数可以理解为需要输出的随机数的位数、字节数。
具体的,所述随机数生成装置将所述第二摘要添加至所述数据池之后,然后对所述数据池中各状态寄存器的状态值进行更新,获取预先选中的目标状态寄存器的目标状态值,从所述目标状态值输出前预设个数数值确定为随机数。
在一种可行的实施方式中,获取更新后的所述数据池如图6所示,所述数据池由32个状态寄存器中的数据串行存储,即两两相邻的状态寄存器的第一状态寄存器的状态值包括的第一比特与第二个状态寄存器包括的最后一比特进行连接,则数据池中32个状态寄存器中的状态值组成如图6所示的数据序列,每个状态寄存器可以存储32字节的状态值,基于各状态寄存器的输出优先级,确定优先级最高的目标寄存器为寄存器32,寄存器的目标状态值如图所示,所述需要输出随机数的位数为6位,则从所述寄存器32的目标状态值中输出前6位数值,将所述6位数值组成的“011101”确定为随机数,并输出。
在一种可行的实施方式中,所述随机数生成装置从目标寄存器的目标状态值输出前预设个数数值确定为随机数,所述预设个数会有一个阈值,所述阈值可以理解为目标状态寄存器输出随机数的最大字节数。例如,所述目标状态寄存器的状态值为32字节,当输出随机数的字节数大于32字节时,可以从数据池中确定多个目标寄存器,获取所述多个目标寄存器的目标状态值,从所述目标状态值将输出前预设个数数值确定为随机数。
可选的,当需要输出随机数的字节数大于所述阈值时,所述随机数生成装置可以多次执行当所述第二熵值大于预设阈值时,生成预设长度的目标数据,获取所述数据池中各状态寄存器的当前状态值,将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列,计算所述第二拼接序列的第二摘要,采用移位方式将所述第二摘要添加至所述数据池中,获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值,将所述目标状态值中前预设个数数值确定为随机数的步骤,从而生成多个随机数,然后将所述多个随机数拼接之后输出。
在本申请实施例中,随机数生成装置获取所采集的环境样本数据以及所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,生成预设长度的目标数据,然后获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,从而可根据更新后的所述数据池中各状态寄存器的状态值生成随机数。通过以环境样本数据为数据源对数据池进行更新,从更新后的数据池中基于随机产生的目标数据以及各状态寄存器的状态值生成随机数,所生成的随机数的随机性较高,从而可以提高生成随机数的安全性。同时不需要使用单独的硬件随机数模块,可以降低硬件成本。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图7,其示出了本申请一个示例性实施例提供的随机数生成装置的结构示意图。该随机数生成装置可以通过软件、硬件或者两者的结合实现成为终端的全部或一部分。该装置1包括数据获取模块11、第二熵值确定模块12、目标数据生成模块13和随机数生成模块14。
数据获取模块11,用于获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值;
第二熵值确定模块12,用于获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值;
目标数据生成模块13,用于当所述第二熵值大于预设阈值时,生成预设长度的目标数据;
随机数生成模块14,用于获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
可选的,如图8所示,所述第二熵值确定模块12具体可以包括:
序列拼接单元121,用于将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,得到第一拼接序列;
摘要添加单元122,用于计算所述第一拼接序列的第一摘要,将所述第一摘要添加至所述数据池中;
熵值确定单元123,用于获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。
可选的,如图8所示,所述摘要添加单元122,具体用于:
采用移位方式将所述第一摘要添加至所述数据池中。
可选的,如图9所示,所述随机数生成模块14具体可以包括:
序列拼接单元141,用于将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列;
摘要单元142,用于计算所述第二拼接序列的第二摘要,将所述第二摘要添加至所述数据池中。
可选的,如图9所示,所述摘要单元142,具体用于:
采用移位方式将所述第二摘要添加至所述数据池中。
可选的,如图9所示,所述随机数生成模块14,具体用于:
获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值,将所述目标状态值中前预设个数数值确定为随机数。
可选的,如图10所示,所述装置1还包括:
差值计算模块15,用于计算所述第二熵值与所述预设阈值的差值,将所述差值作为历史熵值进行保存。
需要说明的是,上述实施例提供的随机数生成装置在执行随机数生成方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的随机数生成装置与随机数生成方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本实施例中,随机数生成装置获取所采集的环境样本数据以及所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,生成预设长度的目标数据,然后获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,从而可根据更新后的所述数据池中各状态寄存器的状态值生成随机数。通过以环境样本数据为数据源对数据池进行更新,从更新后的数据池中基于随机产生的目标数据以及各状态寄存器的状态值生成随机数,所生成的随机数的随机性较高,从而可以提高生成随机数的安全性。同时不需要使用单独的硬件随机数模块,可以降低硬件成本。
本申请实施例还提供了一种计算机存储介质,所述计算机存储介质可以存储有多条指令,所述指令适于由处理器加载并执行如上述图1-图6所示实施例的所述随机数生成方法,具体执行过程可以参见图1-图6所示实施例的具体说明,在此不进行赘述。
本申请还提供了一种计算机程序产品,该计算机程序产品存储有至少一条指令,所述至少一条指令由所述处理器加载并执行如上述图1-图6所示实施例的所述随机数生成方法,具体执行过程可以参见图1-图6所示实施例的具体说明,在此不进行赘述。
请参见图11,为本申请实施例提供了一种电子设备的结构示意图。如图11所示,所述服务器1000可以包括:至少一个处理器1001,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。
其中,通信总线1002用于实现这些组件之间的连接通信。
其中,用户接口1003可以包括显示屏(Display)、摄像头(Camera),可选用户接口1003还可以包括标准的有线接口、无线接口。
其中,网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。
其中,处理器1001可以包括一个或者多个处理核心。处理器1001利用各种借口和线路连接整个服务器1000内的各个部分,通过运行或执行存储在存储器1005内的指令、程序、代码集或指令集,以及调用存储在存储器1005内的数据,执行服务器1000的各种功能和处理数据。可选的,处理器1001可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable GateArray,FPGA)、可编程逻辑阵列(Programmable Logic Array,PLA)中的至少一种硬件形式来实现。处理器1001可集成中央处理器(Central ProcessingUnit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器1001中,单独通过一块芯片进行实现。
其中,存储器1005可以包括随机存储器(RandomAccess Memory,RAM),也可以包括只读存储器(Read-OnlyMemory)。可选的,该存储器1005包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器1005可用于存储指令、程序、代码、代码集或指令集。存储器1005可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现上述各个方法实施例的指令等;存储数据区可存储上面各个方法实施例中涉及到的数据等。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及随机数生成应用程序。
在图11所示的服务器1000中,用户接口1003主要用于为用户提供输入的接口,获取用户输入的数据;而处理器1001可以用于调用存储器1005中存储的随机数生成应用程序,并具体执行以下操作:
获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值;
获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值;
当所述第二熵值大于预设阈值时,生成预设长度的目标数据;
获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
在一个实施例中,所述处理器1001在执行所述基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值时,具体执行以下操作:
将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,得到第一拼接序列;
计算所述第一拼接序列的第一摘要,将所述第一摘要添加至所述数据池中;
获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。
在一个实施例中,所述处理器1001在执行所述将所述第一摘要添加至所述数据池中时,具体执行以下操作:
采用移位方式将所述第一摘要添加至所述数据池中。
在一个实施例中,所述处理器1001在执行所述基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新时,具体执行以下操作:
将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列;
计算所述第二拼接序列的第二摘要,将所述第二摘要添加至所述数据池中。
在一个实施例中,所述处理器1001在执行所述所述将所述第二摘要添加至所述数据池中时,具体执行以下操作:
采用移位方式将所述第二摘要添加至所述数据池中。
在一个实施例中,所述处理器1001在执行所述基于更新后的所述数据池中各状态寄存器的状态值生成随机数时,具体执行以下操作:
获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值;
将所述目标状态值中前预设个数数值确定为随机数。
在一个实施例中,所述处理器1001在执行所述随机数生成方法时,还执行以下步骤:
计算所述第二熵值与所述预设阈值的差值,将所述差值作为历史熵值进行保存。
在本实施例中,随机数生成装置获取所采集的环境样本数据以及所述环境样本数据对应的第一熵值,并获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,当所述第二熵值大于预设阈值时,生成预设长度的目标数据,然后获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,从而可根据更新后的所述数据池中各状态寄存器的状态值生成随机数。通过以环境样本数据为数据源对数据池进行更新,从更新后的数据池中基于随机产生的目标数据以及各状态寄存器的状态值生成随机数,所生成的随机数的随机性较高,从而可以提高生成随机数的安全性。同时不需要使用单独的硬件随机数模块,可以降低硬件成本。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体或随机存储记忆体等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (16)
1.一种随机数生成方法,其特征在于,所述方法包括:
获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值;
获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值;
当所述第二熵值大于预设阈值时,基于当前时间生成预设长度的目标数据,或基于随机数生成装置或搭载随机数生成装置的智能终端的设备信息生成预设长度的目标数据,或基于环境样本数据生成预设长度的目标数据;
获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
2.根据权利要求1所述的随机数生成方法,其特征在于,所述基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值,包括:
将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,得到第一拼接序列;
计算所述第一拼接序列的第一摘要,将所述第一摘要添加至所述数据池中;
获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。
3.根据权利要求2所述的随机数生成方法,其特征在于,所述将所述第一摘要添加至所述数据池中,包括:
采用移位方式将所述第一摘要添加至所述数据池中。
4.根据权利要求1所述的随机数生成方法,其特征在于,所述基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,包括:
将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列;
计算所述第二拼接序列的第二摘要,将所述第二摘要添加至所述数据池中。
5.根据权利要求4所述的随机数生成方法,其特征在于,所述将所述第二摘要添加至所述数据池中,包括:
采用移位方式将所述第二摘要添加至所述数据池中。
6.根据权利要求1所述的随机数生成方法,其特征在于,所述基于更新后的所述数据池中各状态寄存器的状态值生成随机数,包括:
获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值;
将所述目标状态值中前预设个数数值确定为随机数。
7.根据权利要求1所述的随机数生成方法,其特征在于,还包括:
计算所述第二熵值与所述预设阈值的差值,将所述差值作为历史熵值进行保存。
8.一种随机数生成装置,其特征在于,所述装置包括:
第一熵值获取模块,用于获取所采集的环境样本数据,获取所述环境样本数据对应的第一熵值;
第二熵值确定模块,用于获取数据池中各状态寄存器的初始状态值,基于所述初始状态值、所述环境样本数据以及所述第一熵值,得到所述数据池的第二熵值;
目标数据生成模块,用于当所述第二熵值大于预设阈值时,基于当前时间生成预设长度的目标数据,或基于随机数生成装置或搭载随机数生成装置的智能终端的设备信息生成预设长度的目标数据,或基于环境样本数据生成预设长度的目标数据;
随机数生成模块,用于获取所述数据池中各状态寄存器的当前状态值,基于所述目标数据以及所述当前状态值对所述数据池中各状态寄存器的状态值进行更新,基于更新后的所述数据池中各状态寄存器的状态值生成随机数。
9.根据权利要求8所述的随机数生成装置,其特征在于,所述第二熵值确定模块,包括:
序列拼接单元,用于将所述环境样本数据与所述数据池中各状态寄存器的初始状态值进行拼接,得到第一拼接序列;
摘要添加单元,用于计算所述第一拼接序列的第一摘要,将所述第一摘要添加至所述数据池中;
熵值确定单元,用于获取所述数据池的历史熵值,基于所述第一熵值以及所述历史熵值得到所述数据池的第二熵值。
10.根据权利要求9所述的随机数生成装置,其特征在于,所述摘要添加单元,具体用于:
采用移位方式将所述第一摘要添加至所述数据池中。
11.根据权利要求8所述的随机数生成装置,其特征在于,所述随机数生成模块,包括:
序列拼接单元,用于将所述目标数据与所述当前状态值进行拼接,得到第二拼接序列;
摘要添加单元,用于计算所述第二拼接序列的第二摘要,将所述第二摘要添加至所述数据池中。
12.根据权利要求11所述的随机数生成装置,其特征在于,所述摘要添加单元,具体用于:
采用移位方式将所述第二摘要添加至所述数据池中。
13.根据权利要求8所述的随机数生成装置,其特征在于,所述随机数生成模块,具体用于:
获取更新后的所述数据池中预先选中的目标状态寄存器的目标状态值,将所述目标状态值中前预设个数数值确定为随机数。
14.根据权利要求8所述的随机数生成装置,其特征在于,所述装置还包括:
差值计算模块,用于计算所述第二熵值与所述预设阈值的差值,将所述差值作为历史熵值进行保存。
15.一种计算机存储介质,其特征在于,所述计算机存储介质存储有多条指令,所述指令适于由处理器加载并执行如权利要求1~7任意一项的所述的随机数生成方法。
16.一种电子设备,其特征在于,包括:处理器和存储器;其中,所述存储器存储有计算机程序,所述计算机程序适于由所述处理器加载并执行如权利要求1~7任意一项的所述的随机数生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910635804.1A CN110399118B (zh) | 2019-07-15 | 2019-07-15 | 一种随机数生成方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910635804.1A CN110399118B (zh) | 2019-07-15 | 2019-07-15 | 一种随机数生成方法、装置、存储介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110399118A CN110399118A (zh) | 2019-11-01 |
CN110399118B true CN110399118B (zh) | 2022-01-18 |
Family
ID=68325550
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910635804.1A Active CN110399118B (zh) | 2019-07-15 | 2019-07-15 | 一种随机数生成方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399118B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851112A (zh) * | 2019-11-06 | 2020-02-28 | 成都卫士通信息产业股份有限公司 | 一种随机比特生成方法、装置及电子设备和存储介质 |
CN111369518B (zh) * | 2020-02-28 | 2022-11-01 | 创新奇智(合肥)科技有限公司 | 样本扩充方法、装置、电子设备及可读存储介质 |
CN111290734B (zh) * | 2020-03-05 | 2023-09-08 | 中安云科科技发展(山东)有限公司 | 一种真随机数获取方法、系统及密码机 |
CN111414653A (zh) * | 2020-03-17 | 2020-07-14 | 安徽农业大学 | 一种基于rsa非对称加密算法的电脑开机启动方法 |
CN111638866A (zh) * | 2020-04-26 | 2020-09-08 | 北京中交兴路信息科技有限公司 | 随机数生成方法、装置、设备及存储介质 |
EP4148556A4 (en) * | 2020-05-27 | 2023-07-05 | Huawei Technologies Co., Ltd. | RANDOM NUMBER GENERATION APPARATUS AND METHOD |
CN112269780A (zh) * | 2020-10-30 | 2021-01-26 | 北京小米移动软件有限公司 | 数据池中筛选数据的方法、装置及存储介质 |
CN115735191A (zh) * | 2021-06-25 | 2023-03-03 | 京东方科技集团股份有限公司 | 随机序列生成的方法、装置、设备和介质 |
CN114301589B (zh) * | 2021-12-27 | 2024-02-23 | 中国电信股份有限公司 | 目标任务的执行方法和装置、存储介质及电子装置 |
CN115051798B (zh) * | 2022-06-10 | 2023-07-21 | 北京海泰方圆科技股份有限公司 | 一种随机数生成方法、装置、电子设备及存储介质 |
CN117472327A (zh) * | 2023-10-23 | 2024-01-30 | 上海合芯数字科技有限公司 | 一种真随机数生成方法及电路 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7571199B1 (en) * | 2000-11-15 | 2009-08-04 | Microsoft Corporation | Method and apparatus for generating random numbers |
US7894602B2 (en) * | 2006-03-31 | 2011-02-22 | Sap Ag | System and method for generating pseudo-random numbers |
US9558358B2 (en) * | 2013-06-27 | 2017-01-31 | Visa International Service Association | Random number generator in a virtualized environment |
EP3375130A1 (en) * | 2015-11-10 | 2018-09-19 | ID Quantique | Method and device for optics based quantum random number generation |
CN104298485B (zh) * | 2014-10-17 | 2017-11-24 | 飞天诚信科技股份有限公司 | 一种生成满足安全强度要求的随机数的方法 |
WO2019028269A2 (en) * | 2017-08-02 | 2019-02-07 | Strong Force Iot Portfolio 2016, Llc | METHODS AND SYSTEMS FOR DETECTION IN AN INDUSTRIAL ENVIRONMENT OF COLLECTING INTERNET DATA FROM OBJECTS WITH LARGE DATA SETS |
CN106775583B (zh) * | 2016-11-18 | 2019-03-05 | 杭州电子科技大学 | 一种高速真随机数的产生方法 |
CN107943450A (zh) * | 2017-11-17 | 2018-04-20 | 上海众人网络安全技术有限公司 | 随机数生成方法、装置、计算机设备及计算机可读介质 |
CN108491184B (zh) * | 2018-03-16 | 2021-04-27 | 数安时代科技股份有限公司 | 随机数发生器的熵源采集方法、计算机设备及存储介质 |
CN108959968B (zh) * | 2018-07-23 | 2020-11-17 | 北京车和家信息技术有限公司 | 随机数序列生成方法及装置、车辆和存储介质 |
CN109617684B (zh) * | 2018-12-26 | 2021-07-13 | 绍兴心越科技有限公司 | 自修复主动防御式真随机数发生装置及生成方法 |
-
2019
- 2019-07-15 CN CN201910635804.1A patent/CN110399118B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110399118A (zh) | 2019-11-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399118B (zh) | 一种随机数生成方法、装置、存储介质及电子设备 | |
CN108805565B (zh) | 基于区块链的承诺存在性证明方法、设备及可读存储介质 | |
CN108495043A (zh) | 图像数据处理方法及相关装置 | |
CN115051798A (zh) | 一种随机数生成方法、装置、电子设备及存储介质 | |
CN113570030A (zh) | 数据处理方法、装置、设备以及存储介质 | |
CN110659905A (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN111553320A (zh) | 保护个人数据隐私的特征提取方法、模型训练方法及硬件 | |
CN110704535A (zh) | 数据分箱方法、装置、设备及计算机可读存储介质 | |
CN108650265B (zh) | 文件的下载方法及其装置、存储介质、电子终端 | |
CN108287859B (zh) | 一种多媒体信息检索方法及装置 | |
CN117473249A (zh) | 网络流量检测模型的建模方法、检测方法及相关设备 | |
CN111130791A (zh) | 数据签名方法、电子设备及计算机可读存储介质 | |
CN116260572A (zh) | 数据杂凑处理方法、数据验证方法及电子设备 | |
CN117014693A (zh) | 视频处理方法、装置、设备以及存储介质 | |
CN113706131B (zh) | 一种基于加密卡的区块链交易方法、装置和设备 | |
CN109308327A (zh) | 基于子图模型兼容点中心模型的图计算方法装置介质设备 | |
CN106912066B (zh) | 一种关键绩效指标的计算方法及装置 | |
CN114328619A (zh) | 多要素数据匹配方法及装置 | |
CN114491421A (zh) | 文件加密、文件处理方法、装置、可读介质和电子设备 | |
CN113783795A (zh) | 加密流量分类方法及相关设备 | |
CN114625338A (zh) | 随机数的获取方法、存储方法、装置、电子设备及介质 | |
CN113190707B (zh) | 一种人脸库管理系统、方法、装置、存储设备及存储介质 | |
CN114254357A (zh) | 基于隐私保护的数据处理方法、装置和服务器 | |
CN115955315B (zh) | 环机密交易的签名验证方法、系统、设备及可读存储介质 | |
CN117579286B (zh) | 数字签名的生成方法、系统、存储介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |