CN116243887B - 软件随机数生成方法及装置 - Google Patents

软件随机数生成方法及装置 Download PDF

Info

Publication number
CN116243887B
CN116243887B CN202211559631.8A CN202211559631A CN116243887B CN 116243887 B CN116243887 B CN 116243887B CN 202211559631 A CN202211559631 A CN 202211559631A CN 116243887 B CN116243887 B CN 116243887B
Authority
CN
China
Prior art keywords
random number
random
seed
modulus
preset
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
Application number
CN202211559631.8A
Other languages
English (en)
Other versions
CN116243887A (zh
Inventor
张玉安
蒋红宇
胡伯良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Haitai Fangyuan High Technology Co Ltd
Original Assignee
Beijing Haitai Fangyuan High Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Haitai Fangyuan High Technology Co Ltd filed Critical Beijing Haitai Fangyuan High Technology Co Ltd
Priority to CN202211559631.8A priority Critical patent/CN116243887B/zh
Publication of CN116243887A publication Critical patent/CN116243887A/zh
Application granted granted Critical
Publication of CN116243887B publication Critical patent/CN116243887B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/588Random 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)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

本申请提供一种软件随机数生成方法及装置,涉及信息安全领域,该方法包括:基于系统的随机参数生成目标大数;目标大数对应的字节数为第一预设字节数;将目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数。本申请提供的软件随机数生成方法及装置,能够以软件生成随机数的方式,可高效、高质量的生成随机数。

Description

软件随机数生成方法及装置
技术领域
本申请涉及信息安全领域,尤其涉及一种软件随机数生成方法及装置。
背景技术
随机数生成是许多数据保密系统中不可缺少的关键环节,随机数的质量直接影响密码系统的可靠性和稳定性。在目前的信息安全技术领域,很多密码协议的安全性都要求产生高质量的随机数。因此,随机数在身份认证、密钥生成等场合具有举足轻重的作用。
在相关技术中,基于硬件的随机数发生器和基于物理噪声的真随机数发生器已经有了广泛的应用。但是,在某些场景它们难以满足实际应用需求。而相比之下,基于软件编程实现的伪随机数生成器在实用性、低成本和易实现方面均占居优势,甚至更易达到随机性检测要求。
发明内容
本申请的目的是提供一种软件随机数生成方法及装置,采用软件生成随机数的方式,可高效、高质量的生成随机数。
本申请提供一种软件随机数生成方法,包括:
基于系统的随机参数生成目标大数;将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
如此,使得随机数发生器能够根据用户设置的字节数快速且高效的生成所需的随机数。
可选地,所述方法还包括:将所述目标大数与第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子;其中,所述第二随机数种子用于生成下一个随机数时作为随机数种子使用。
如此,可以使得每次生成随机数时使用的随机数种子均不相同,且每次使用的随机数种子也无规律可循,增加破解难度。
可选地,所述基于系统的随机参数生成目标大数之前,所述方法还包括:根据生成的所述目标随机数的长度确定所述第一预设字节数,并计算所述第一预设字节数所能表示的最大数;将小于所述预设最大数、且与所述预设最大数相邻的多个素数中的任一素数确定为所述第一模数;基于第二预设字节数确定所述第二模数;其中,所述第二模数的量级大于或者等于所述第一模数的量级;所述第二模数大于所述第一模数;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
如此,通过将上述两个大数作为随机数生成过程中使用的模数,能够增加破解的难度。
可选地,所述基于第二预设字节数确定所述第二模数,包括:基于所述第二预设字节数,将大于所述第一模数、且与所述第一模数对应的字节数相差预设差值的数确定为所述第二模数。
如此,不仅能保障随机数种子的熵量大于随机数的信息量,而且还有较高的抗攻击能力。
可选地,所述基于系统的随机参数生成目标大数,包括:基于系统的随机参数获取字节数小于或者等于所述第一预设字节数的多个二进制随机数,并基于所述多个二进制随机数生成第一数组;将所述第一数组转换为所述目标大数;其中,所述第一数组为所述目标大数的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的。
如此,基于多种途径获取的系统随机参数生成的随机数,能够保证较大熵量,增加破解难度。
可选地,所述将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数之前,所述方法还包括:在所述第一随机数种子未被初始化的情况下,基于系统随机参数获取多个二进制随机数,并基于所述多个二进制随机数生成第二数组;将所述第二数组转换为所述第一随机数种子;其中,所述第二数组的字节数为第二预设字节数;所述第二数组为所述第一随机数种子的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
如此,在未生成任何随机数之前,可以使用基于多种途径获取的系统随机参数生成的随机数作为随机数种子使用。
可选地,所述将所述目标大数与第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子之后,所述方法还包括:在生成所述第二随机数种子之后的预设时长内未基于所述第二随机数种子生成新的随机数的情况下,基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子;其中,所述第三随机数种子用于生成下一个随机数时作为随机数种子使用。
如此,通过频繁的更新随机数种子,可以极大地提高随机数生成器的抗攻击能力。
可选地,所述基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子,包括:获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号;将所述目标参数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成中间随机数;将所述中间随机数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成所述第三随机数种子。
如此,通过上述重播方法生成的更新后的随机数种子,将变化中的系统时间信息融入到了新的随机数种子中,使得随机数种子更加难以预测。
本申请还提供一种软件随机数生成装置,包括:
参数生成模块,用于基于系统的随机参数生成目标大数;随机数生成模块,用于将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
可选地,所述装置还包括种子生成模块:所述种子生成模块,用于将所述目标大数与所述第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子;其中,所述第二随机数种子用于生成下一个随机数时作为随机数种子使用。
可选地,所述装置还包括计算模块和确定模块:所述计算模块,用于根据生成的所述目标随机数的长度确定所述第一预设字节数,并计算所述第一预设字节数所能表示的最大数;所述确定模块,用于将小于所述预设最大数、且与所述预设最大数相邻的多个素数中的任一素数确定为所述第一模数;所述确定模块,还用于基于第二预设字节数确定所述第二模数;其中,所述第二模数的量级大于或者等于所述第一模数的量级;所述第二模数大于所述第一模数;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
可选地,所述确定模块,具体用于基于所述第二预设字节数,将大于所述第一模数、且与所述第一模数对应的字节数相差预设差值的数确定为所述第二模数。
可选地,所述参数生成模块,具体用于基于系统的随机参数获取字节数小于或者等于所述第一预设字节数的多个二进制随机数,并基于所述多个二进制随机数生成第一数组;所述参数生成模块,具体还用于将所述第一数组转换为所述目标大数;其中,所述第一数组为所述目标大数的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的。
可选地,所述参数生成模块,还用于在所述第一随机数种子未被初始化的情况下,基于系统随机参数获取多个二进制随机数,并基于所述多个二进制随机数生成第二数组;所述参数生成模块,还用于将所述第二数组转换为所述第一随机数种子;其中,所述第二数组的字节数为第二预设字节数;所述第二数组为所述第一随机数种子的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
可选地,所述种子生成模块,还用于在生成所述第二随机数种子之后的预设时长内未基于所述第二随机数种子生成新的随机数的情况下,基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子;其中,所述第三随机数种子用于生成下一个随机数时作为随机数种子使用。
可选地,所述装置还包括获取模块:所述获取模块,用于获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号;所述种子生成模块,具体用于将所述目标参数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成中间随机数;所述种子生成模块,具体还用于将所述中间随机数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成所述第三随机数种子。
本申请还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现如上述任一种所述软件随机数生成方法的步骤。
本申请还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述软件随机数生成方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述软件随机数生成方法的步骤。
本申请提供的软件随机数生成方法及装置,在需要生成随机数的情况下,基于系统的随机参数生成目标大数;目标大数对应的字节数为第一预设字节数,之后,将目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数。如此,使得随机数发生器能够根据用户设置的随机数长度快速且高效的生成所需的随机数。
附图说明
为了更清楚地说明本申请或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的软件随机数生成方法的流程示意图之一;
图2是本申请提供的软件随机数生成方法的流程示意图之二;
图3是本申请提供的软件随机数生成装置的结构示意图;
图4是本申请提供的电子设备的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
随机数在安全算法领域的作用非常大,按其实现方式可分为硬件随机数和软件随机数两大类,硬件随机数的性能也许会优于软件随机数。所谓随机数的性能,可以对大量的随机数样本进行随机性测试来评估和确定。在相关技术中,硬件随机数的生产装置需要较高的成本,而软件随机数的成本仅需软件资源的成本,可忽略不计,且软件随机数更易实现。
依据不同的应用需求和安全理念,已出现了很多种软件随机数生成器方案。基于数据加密标准(Data Encryption Standard,DES)、3DES(Triple DES)、高级加密标准(Advanced Encryption Standard,AES)等分组密码算法和MD5信息摘要算法(MD5Message-Digest Algorithm)、SM3等哈希hash函数算法构建的随机数生成器较为多见,且一般采用类似伪随机数生成器标准ANSI X9.17的逻辑结构。
在ANSI X9.17逻辑结构中,每产生一个随机数,需要调用3次分组加密运算,运算效率不高,且需要安全存储加密密钥及内部状态种子数据。当使用3DES算法时,需要安全存储两个密钥和种子,还要调用采样熵源,不仅运算效率不高,而且每次只能生成8字节随机数。
因此,在保证安全生成随机数的前提下,如何生成满足质量要求及检测指标的随机数,减少密码运算次数,提高生产效率,较少占用存储空间及降低安全管理成本,是随机数发生器设计中需要解决的技术问题。而且,在如今的一些公钥密码加密和签名应用中,常常需要256比特甚至更长的随机数,诸如ANSI X9.17的算法每次只能产生8字节或16字节,略显产力不足。
基于此,本申请实施例提供了一种软件随机数生成方法,随机数发生器由字节数可变的随机种子和若干字节采样熵源,基于两个不同模数的二元非线性函数构成,可依据需要输出的随机数长度,设置模数及随机数种子长度。在种子更新方面,设置了两种更新模式。一种是普通种子更新。另一种是重播种子,特点是空闲状态时仍然会更新种子,且将变化中的系统时间信息不断地融入到随机数种子之中。
由于随机数发生器采用的两个模数规模差异较大、且随机数种子更新采用二次以上二元多项式函数,使得攻击者难以由随机数推测种子。在安全性和效率方面可与基于分组密码算法或hash函数算法构建的随机数生成器不相上下。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的软件随机数生成方法进行详细地说明。
如图1所示,本申请实施例提供的一种软件随机数生成方法,该方法可以包括下述步骤101至步骤105:
步骤101、根据生成的目标随机数的长度确定第一预设字节数,并计算所述第一预设字节数所能表示的最大数。
示例性地,上述第一预设字节数可以根据生成随机数的长度进行设置,即生成的随机数的长度与第一预设字节数的长度相同。
举例说明,当需要生成128比特(16字节)长度的随机数时,可以基于系统的随机参数生成128比特长度的大数,并基于该大数和种子进一步生成128比特长度的随机数。
步骤102、将小于所述预设最大数、且与所述预设最大数相邻的多个素数中的任一素数确定为所述第一模数。
其中,第一模数对应的字节数为第一预设字节数;所述第一模数为小于预设最大数的素数,所述预设最大数为所述第一预设字节数所能表示的最大数。
可以理解的是,有多个素数均为与预设最大数相近的素数。即上述第一模数可以为小于预设最大数的最大素数,也可以是小于预设最大数的第二大素数,还可以是小于预设最大数的第三大素数等。只要满足取模运算后的剩余,被表示为二进制时各个比特位的0、1概率相对比较均衡,该第一模数可选与预设最大数接近的任一素数。
示例性地,在得到上述第一预设字节数所能表示的最大数之后,需要通过计算找到与该最大数接近、且小于该最大数的素数作为第一模数。
可以理解的是,由于素数是除了1和它本身以外不再有其他因数的自然数,因此,采用素数可使攻击者难以预测随机数生成过程中使用的随机参数。
步骤103、基于第二预设字节数确定所述第二模数。
其中,所述第二模数的量级大于或者等于所述第一模数的量级;所述第二模数大于所述第一模数;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
示例性地,上述第一模数为素数,上述第二模数可以为素数,也可以为非素数。
具体地,上述步骤103,可以包括以下步骤103a:
步骤103a、基于所述第二预设字节数,将大于所述第一模数、且与所述第一模数对应的字节数相差预设差值的数确定为所述第二模数。
其中,所述第二模数为大于所述第一模数的整数。该第二模数可以不是素数,也可以是素数。
在一种可能的实现方式中,为了增加攻击者的破解难度,上述第二模数也应该选择素数,且该第二模数对应的字节数与第一模数对应的字节数相差预设差值。
举例说明,根据需要生成的随机数的长度(即上述第一预设字节数)选定一个模数Q(即上述第一模数)。例如,当需要产生32字节的随机数时,可选Q=2256-189或Q=2256-357等,即Q为小于且近似2256的素数。之后,再选定一个大数模数P(即上述第二模数)。当将P表示为字节时,其字节数与随机数种子的字节数相同。例如,当种子长度为48时,可选P=2384-13。允许P与Q大小相近,但为了安全方面更为稳妥,较为合适的大小关系为:数量级至少相差128比特,即P>2128Q。当P>2128Q时,不仅能保障种子的熵量大于随机数的信息量,而且有较高的抗攻击能力。
示例性地,在得到上述第一模数和第二模数之后,便可以基于第一模数生成随机数,以及基于第二模数计算出下一次生成随机数时使用的随机数种子。
步骤104、基于系统的随机参数生成目标大数。
示例性地,针对生成目标大数采用的随机参数,上述系统的随机参数可以包括以下至少一项:系统时间,光标位置,编程语言的随机数生成函数(例如,C语言的rand()函数)等。
示例性地,在得到系统的随机参数后,便可以通过特定的转换函数将得到的随机参数转换为第一预设字节数的目标大数。
具体地,上述步骤104,可以包括以下步骤104a1和步骤104a2:
步骤104a1、基于系统的随机参数获取字节数小于或者等于所述第一预设字节数的多个二进制随机数,并基于所述多个二进制随机数生成第一数组。
示例性地,在上述系统的随机参数不为二进制数据的情况下,可以将上述系统的随机参数转换为二进制数。例如,在上述系统的随机参数为人工移动鼠标或者敲击键盘产生的信息的情况下,可以将该信息转换为二进制随机数。
可以理解的是,在上述多个二进制随机数的总长度小于或等于第一预设字节数的情况下,可以将上述多个二进制随机数拼接成第一数组;在上述多个二进制随机数的总长度大于第一预设字节数的情况下,可以将上述多个二进制随机数压缩成第一数组。
步骤104a2、将所述第一数组转换为所述目标大数。
其中,所述第一数组的字节数等于所述第一预设字节数;所述第一数组为所述目标大数的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的。
示例性地,上述多个二进制随机数中的每个二进制随机数均为基于系统的随机参数得到的。
可以理解的是,系统的不同随机参数能够得到多种熵源的随机数,因此,为了能够得到第一预设字节数的目标大数,需要通过一个或者多个系统功能来得到适量的随机数,并将这些随机数组合成第一预设字节数的目标大数。
举例说明,为了得到上述第一数组,可以基于操作人员敲击键盘或者拖曳鼠标的操作,通过记录键盘输入值、敲击之间的时间间隔、鼠标移动速度和距离等信息,产生全部或部分随机数据。也可以通过获取当前的系统时间、光标所在屏幕中的坐标位置数值、或者采集到的噪声或声音等多类信息数据。
将这些数据或数值依某种转换函数转换成字节后构成上述第一数组。若根据上述多种方式仍未凑足足够的字节数,还可调用某些编译系统中能产生随机数的函数,如C语言中的rand()函数,每调用一次可产生两字节(或4字节)随机数,可以连续多次调用,直至得到足够的二进制随机数,并将该随机数存储在上述第一数组中。
步骤105、将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数。
其中,所述第一模数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的。所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
示例性地,上述初始化是指开始正式产生随机数之前的预备阶段,对配置参数进行一系列变换。
可以理解的是,由于目标随机数是目标大数与第一随机数种子进行函数运算后与第一模数取模后得到的,因此,目标随机数的长度与第一模数的长度相同。即只需限定第一模数的长度,便可以得到对应长度的随机数。
示例性地,针对随机数种子的初始化,上述步骤105之前,本申请实施例提供的软件随机数生成方法,还可以包括以下步骤106和步骤107:
步骤106、在所述第一随机数种子未被初始化的情况下,基于系统随机参数获取多个二进制随机数,并基于所述多个二进制随机数生成第二数组。
步骤107、将所述第二数组转换为所述第一随机数种子。
其中,所述第二数组的字节数为第二预设字节数;所述第二数组为所述第一随机数种子的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
可以理解的是,随机数种子是随机数发生器中最核心的安全参数,也是本申请实施例提供的软件随机数生成方法的主要熵源。当第一次生成随机数时,需要将上述第二数组转换为生成随机数时调用的随机数种子;当成功执行一次随机数生成之后,便可以基于第二模数的函数运算生成下一次随机数生成过程中使用的随机数种子。
示例性地,生成上述第二数组时调用的系统随机参数的获取方式可以与生成上述第一数组时调用的系统随机参数的获取方式相同。
在一种可能的实现方式中,生成上述第一数组时调用的系统随机参数可以完全由系统随机生成;生成上述第二数组时调用的系统随机参数可以为系统基于人工操作(包括:人工移动鼠标或者敲击键盘等)生成。
示例性地,在得到上述目标大数、第一随机数种子以及第一模数之后,便可以生成所需的目标随机数。
具体地,可以通过以下公式一生成所需的随机数:
h(X,Y)=(a1+b1Xj1+c1X k1Y l1+d1Y m1+X n1)mod Q(公式一)
其中,a1、b1、c1、d1均为大于或者等于1的整数,j1、k1、l1、m1、n1为指数、且j1、k1、l1、m1、n1均为大于或者等于1的整数;X为上述第一随机数种子,Y为上述目标大数。
基于上述公式一,生成随机数的函数h(X,Y)可以表示为h(X,Y)=(7+999917X+XY+799489Y2+X5)mod Q。其中,Q=2256-357,X和Y分别为长度为48字节和32字节的大数。
可选地,在本申请实施例中,在生成上述目标随机数之后,还可以根据上述第一随机数种子、目标大数以及上述第二模数,得到下一次生成随机数的过程中使用的随机数种子。
示例性地,本申请实施例提供的软件随机数生成方法,还可以包括以下步骤108:
步骤108、将所述目标大数与第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子。
其中,所述第二随机数种子用于生成下一个随机数时作为随机数种子使用。
具体地,可以通过以下公式二生成下一次随机数生成过程中使用的随机数种子:
g(X,Y)=(a2+b2Xj2+c2X k2Y l2+d2Y m2+X n2)mod P(公式二)
其中,a2、b2、c2、d2均为大于或者等于2的整数,j2、k2、l2、m2、n2为指数、且j2、k2、l2、m2、n2均为大于或者等于2的整数;X为上述第一随机数种子,Y为上述目标大数。
基于上述公式二,生成随机数的过程中使用的随机数种子的函数g(X,Y)可以表示为g(X,Y)=(23+47XY+888799X2+Y3)mod P。可选P=2384–13,参与运算的X和Y分别是长度为48字节和32字节的大数。
举例说明,如图2所示,为本申请实施例提供的软件随机数生成方法的详细的流程示意图。首先,需要设置随机数长度,根据随机数种子和随机数长度可以选择和确定模数P、模数Q以及目标大数字节数。之后,需要判断是否存在随机数种子,若存在,则直接使用已经存在的随机数种子;若不存在,则根据本申请实施例提供的第二数组的生成方法生成所需的随机数种子。在调用随机数种子之后,便可以获取目标大数,并根据目标大数、随机数种子以及模数Q生成随机数,以及根据目标大数、随机数种子以及模数P生成新的随机数种子。新的随机数种子可以用于下一次随机数的生成。重复执行获取目标大数以及后续的步骤,便可以源源不断的生成随机数。
可选地,在本申请实施例中,为了提高抗攻击能力,需要频繁的更换新的随机数种子。
示例性地,上述步骤108之后,本申请实施例提供的软件随机数生成方法,还可以包括以下步骤109:
步骤109、在生成所述第二随机数种子之后的预设时长内未基于所述第二随机数种子生成新的随机数的情况下,基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子。
其中,所述第三随机数种子用于生成下一个随机数时作为随机数种子使用。
示例性地,在生成上述第二随机数种子之后,若在预设时长(例如,10分钟)内未使用该随机数算法,便可以自动执行一次重播种子的操作。
具体地,上述步骤109,可以包括以下步骤109a1至步骤109a3:
步骤109a1、获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号。
步骤109a2、将所述目标参数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成中间随机数。
步骤109a3、将所述中间随机数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成所述第三随机数种子。
示例性地,在满足重播种子的情况下,可以获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号m,并根据以下公式一和公式二计算新的随机数种子:
T=「(X+m)2/3.14159265」mod P(公式一)
V=(X+T)mod P (公式二)
其中,「(X+m)2/3.14159265」表示对两数相除后取整,V用于新的随机数种子,参与下一次随机数的生成。
需要说明的是,上述g(X,Y)和h(X,Y)可以有多种选择,若上述g(X,Y)和h(X,Y)为多项式函数,则至少应为二次函数(一次函数易受攻击)。建议多项式的指数为2至8之间,指数过高可能会降低函数计算效率。
本申请实施例提供的软件随机数生成方法,在需要生成随机数的情况下,基于系统的随机参数生成目标大数;目标大数对应的字节数为第一预设字节数,之后,将目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数。如此,使得随机数发生器能够根据用户设置的随机数长度快速且高效的生成所需的随机数。
需要说明的是,本申请实施例提供的软件随机数生成方法,执行主体可以为软件随机数生成装置,或者该软件随机数生成装置中的用于执行软件随机数生成方法的控制模块。本申请实施例中以软件随机数生成装置执行软件随机数生成方法为例,说明本申请实施例提供的软件随机数生成装置。
需要说明的是,本申请实施例中,上述各个方法附图所示的。软件随机数生成方法均是以结合本申请实施例中的一个附图为例示例性的说明的。具体实现时,上述各个方法附图所示的软件随机数生成方法还可以结合上述实施例中示意的其它可以结合的任意附图实现,此处不再赘述。
下面对本申请提供的软件随机数生成装置进行描述,下文描述的与上文描述的软件随机数生成方法可相互对应参照。
图3为本申请一实施例提供的软件随机数生成装置的结构示意图,如图3所示,具体包括:
参数生成模块301,用于基于系统的随机参数生成目标大数;随机数生成模块302,用于将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
可选地,所述装置还包括种子生成模块:所述种子生成模块,用于将所述目标大数与所述第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子;其中,所述第二随机数种子用于生成下一个随机数时作为随机数种子使用。
可选地,所述装置还包括计算模块和确定模块:所述计算模块,用于根据生成的所述目标随机数的长度确定所述第一预设字节数,并计算所述第一预设字节数所能表示的最大数;所述确定模块,用于将小于所述预设最大数、且与所述预设最大数相邻的多个素数中的任一素数确定为所述第一模数;所述确定模块,还用于基于第二预设字节数确定所述第二模数;其中,所述第二模数的量级大于或者等于所述第一模数的量级;所述第二模数大于所述第一模数;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
可选地,所述确定模块,具体用于基于所述第二预设字节数,将大于所述第一模数、且与所述第一模数对应的字节数相差预设差值的数确定为所述第二模数。
可选地,所述参数生成模块301,具体用于基于系统的随机参数获取字节数小于或者等于所述第一预设字节数的多个二进制随机数,并基于所述多个二进制随机数生成第一数组;所述参数生成模块301,具体还用于将所述第一数组转换为所述目标大数;其中,所述第一数组的字节数等于所述第一预设字节数;所述第一数组为所述目标大数的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的。
可选地,所述参数生成模块301,还用于在所述第一随机数种子未被初始化的情况下,基于系统随机参数获取多个二进制随机数,并基于所述多个二进制随机数生成第二数组;所述参数生成模块301,还用于将所述第二数组转换为所述第一随机数种子;其中,所述第二数组的字节数为第二预设字节数;所述第二数组为所述第一随机数种子的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
可选地,所述种子生成模块,还用于在生成所述第二随机数种子之后的预设时长内未基于所述第二随机数种子生成新的随机数的情况下,基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子;其中,所述第三随机数种子用于生成下一个随机数时作为随机数种子使用。
可选地,所述装置还包括获取模块:所述获取模块,用于获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号;所述种子生成模块,具体用于将所述目标参数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成中间随机数;所述种子生成模块,具体还用于将所述中间随机数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成所述第三随机数种子。
本申请提供的软件随机数生成装置,在需要生成随机数的情况下,基于系统的随机参数生成目标大数;目标大数对应的字节数为第一预设字节数,之后,将目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数。如此,使得随机数发生器能够根据用户设置的随机数长度快速且高效的生成所需的随机数。
图4示例了一种电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储器430中的逻辑指令,以执行软件随机数生成方法,该方法包括:基于系统的随机参数生成目标大数;将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本申请还提供一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的软件随机数生成方法,该方法包括:基于系统的随机参数生成目标大数;将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
又一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的软件随机数生成方法,该方法包括:基于系统的随机参数生成目标大数;将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (16)

1.一种软件随机数生成方法,其特征在于,包括:
基于系统的随机参数生成目标大数;
将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;
其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的;
基于第二预设字节数确定所述第二模数,包括:
基于所述第二预设字节数,将大于所述第一模数、且与所述第一模数对应的字节数相差预设差值的数确定为所述第二模数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述目标大数与所述第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子;
其中,所述第二随机数种子用于生成下一个随机数时作为随机数种子使用。
3.根据权利要求1所述的方法,其特征在于,所述基于系统的随机参数生成目标大数之前,所述方法还包括:
根据生成的所述目标随机数的长度确定所述第一预设字节数,并计算所述第一预设字节数所能表示的最大数;
将小于所述预设最大数、且与所述预设最大数相邻的多个素数中的任一素数确定为所述第一模数;
基于第二预设字节数确定所述第二模数;
其中,所述第二模数的量级大于或者等于所述第一模数的量级;所述第二模数大于所述第一模数;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
4.根据权利要求1所述的方法,其特征在于,所述基于系统的随机参数生成目标大数,包括:
基于系统的随机参数获取字节数小于或者等于所述第一预设字节数的多个二进制随机数,并基于所述多个二进制随机数生成第一数组;
将所述第一数组转换为所述目标大数;
其中,所述第一数组为所述目标大数的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的。
5.根据权利要求1所述的方法,其特征在于,所述将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数之前,所述方法还包括:
在所述第一随机数种子未被初始化的情况下,基于系统随机参数获取多个二进制随机数,并基于所述多个二进制随机数生成第二数组;
将所述第二数组转换为所述第一随机数种子;
其中,所述第二数组的字节数为第二预设字节数;所述第二数组为所述第一随机数种子的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
6.根据权利要求2所述的方法,其特征在于,所述将所述目标大数与第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子之后,所述方法还包括:
在生成所述第二随机数种子之后的预设时长内未基于所述第二随机数种子生成新的随机数的情况下,基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子;
其中,所述第三随机数种子用于生成下一个随机数时作为随机数种子使用。
7.根据权利要求6所述的方法,其特征在于,所述基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子,包括:
获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号;
将所述目标参数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成中间随机数;
将所述中间随机数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成所述第三随机数种子。
8.一种软件随机数生成装置,其特征在于,所述装置包括:
参数生成模块,用于基于系统的随机参数生成目标大数;
随机数生成模块,用于将所述目标大数与第一随机数种子进行函数运算,并将运算结果与第一模数进行取模运算,生成目标随机数;
其中,所述目标随机数对应的字节数为第一预设字节数;在所述第一随机数种子未被初始化的情况下,所述第一随机数种子为基于系统的随机参数生成的;在所述第一随机数种子完成初始化的情况下,所述第一随机数种子为生成上一个随机数的过程中,基于第二模数的函数运算生成的;所述第一模数对应的字节数为所述第一预设字节数;所述第一模数为小于预设最大数的素数;所述预设最大数为所述第一预设字节数所能表示的最大数;所述第二模数为基于所述第一随机数种子的长度确定的;
确定模块,具体用于基于第二预设字节数,将大于所述第一模数、且与所述第一模数对应的字节数相差预设差值的数确定为所述第二模数。
9.根据权利要求8所述的装置,其特征在于,所述装置还包括种子生成模块:
所述种子生成模块,用于将所述目标大数与所述第一随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成第二随机数种子;
其中,所述第二随机数种子用于生成下一个随机数时作为随机数种子使用。
10.根据权利要求8所述的装置,其特征在于,所述装置还包括计算模块和确定模块:
所述计算模块,用于根据生成的所述目标随机数的长度确定所述第一预设字节数,并计算所述第一预设字节数所能表示的最大数;
所述确定模块,用于将小于所述预设最大数、且与所述预设最大数相邻的多个素数中的任一素数确定为所述第一模数;
所述确定模块,还用于基于第二预设字节数确定所述第二模数;
其中,所述第二模数的量级大于或者等于所述第一模数的量级;所述第二模数大于所述第一模数;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
11.根据权利要求8所述的装置,其特征在于,
所述参数生成模块,具体用于基于系统的随机参数获取字节数小于或者等于所述第一预设字节数的多个二进制随机数,并基于所述多个二进制随机数生成第一数组;
所述参数生成模块,具体还用于将所述第一数组转换为所述目标大数;
其中,所述第一数组为所述目标大数的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的。
12.根据权利要求8所述的装置,其特征在于,
所述参数生成模块,还用于在所述第一随机数种子未被初始化的情况下,基于系统随机参数获取多个二进制随机数,并基于所述多个二进制随机数生成第二数组;
所述参数生成模块,还用于将所述第二数组转换为所述第一随机数种子;
其中,所述第二数组的字节数为第二预设字节数;所述第二数组为所述第一随机数种子的二进制表示数组;所述多个二进制随机数为基于系统的随机参数生成的;所述第二预设字节数为生成随机数过程中使用的随机数种子的长度。
13.根据权利要求9所述的装置,其特征在于,
所述种子生成模块,还用于在生成所述第二随机数种子之后的预设时长内未基于所述第二随机数种子生成新的随机数的情况下,基于系统的随机参数、所述第二随机数种子以及所述第二模数,生成第三随机数种子;
其中,所述第三随机数种子用于生成下一个随机数时作为随机数种子使用。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括获取模块:
所述获取模块,用于获取系统的目标参数;所述目标参数包括以下任一项:系统时间,光标位置,程序进程号;
所述种子生成模块,具体用于将所述目标参数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成中间随机数;
所述种子生成模块,具体还用于将所述中间随机数与所述第二随机数种子进行函数运算,并将运算结果与所述第二模数进行取模运算,生成所述第三随机数种子。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述软件随机数生成方法的步骤。
16.一种电子设备,其特征在于,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如权利要求1至7中任一项所述软件随机数生成方法的步骤。
CN202211559631.8A 2022-12-06 2022-12-06 软件随机数生成方法及装置 Active CN116243887B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211559631.8A CN116243887B (zh) 2022-12-06 2022-12-06 软件随机数生成方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211559631.8A CN116243887B (zh) 2022-12-06 2022-12-06 软件随机数生成方法及装置

Publications (2)

Publication Number Publication Date
CN116243887A CN116243887A (zh) 2023-06-09
CN116243887B true CN116243887B (zh) 2023-11-14

Family

ID=86633822

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211559631.8A Active CN116243887B (zh) 2022-12-06 2022-12-06 软件随机数生成方法及装置

Country Status (1)

Country Link
CN (1) CN116243887B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725714A (zh) * 2004-07-20 2006-01-25 华为技术有限公司 伪随机数产生装置及利用其实现的测试系统
CN102520908A (zh) * 2011-12-20 2012-06-27 大唐微电子技术有限公司 一种伪随机数生成器及伪随机数生成方法
CN109325367A (zh) * 2018-08-24 2019-02-12 中国人民解放军国防科技大学 信息隐藏方法、装置、设备及计算机可读存储介质
CN110309665A (zh) * 2019-07-08 2019-10-08 北京海泰方圆科技股份有限公司 一种sm2数字签名的快速生成方法和装置
CN110851112A (zh) * 2019-11-06 2020-02-28 成都卫士通信息产业股份有限公司 一种随机比特生成方法、装置及电子设备和存储介质
CN114257366A (zh) * 2021-12-20 2022-03-29 成都卫士通信息产业股份有限公司 信息同态处理方法、装置、设备及计算机可读存储介质
CN114465712A (zh) * 2022-03-28 2022-05-10 蜂巢能源科技(无锡)有限公司 一种数据加密方法及装置
CN115051798A (zh) * 2022-06-10 2022-09-13 北京海泰方圆科技股份有限公司 一种随机数生成方法、装置、电子设备及存储介质

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8787565B2 (en) * 2007-08-20 2014-07-22 Intel Corporation Method and apparatus for generating an advanced encryption standard (AES) key schedule
US8856198B2 (en) * 2012-03-30 2014-10-07 Freescale Semiconductor, Inc. Random value production methods and systems

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1725714A (zh) * 2004-07-20 2006-01-25 华为技术有限公司 伪随机数产生装置及利用其实现的测试系统
CN102520908A (zh) * 2011-12-20 2012-06-27 大唐微电子技术有限公司 一种伪随机数生成器及伪随机数生成方法
CN109325367A (zh) * 2018-08-24 2019-02-12 中国人民解放军国防科技大学 信息隐藏方法、装置、设备及计算机可读存储介质
CN110309665A (zh) * 2019-07-08 2019-10-08 北京海泰方圆科技股份有限公司 一种sm2数字签名的快速生成方法和装置
CN110851112A (zh) * 2019-11-06 2020-02-28 成都卫士通信息产业股份有限公司 一种随机比特生成方法、装置及电子设备和存储介质
CN114257366A (zh) * 2021-12-20 2022-03-29 成都卫士通信息产业股份有限公司 信息同态处理方法、装置、设备及计算机可读存储介质
CN114465712A (zh) * 2022-03-28 2022-05-10 蜂巢能源科技(无锡)有限公司 一种数据加密方法及装置
CN115051798A (zh) * 2022-06-10 2022-09-13 北京海泰方圆科技股份有限公司 一种随机数生成方法、装置、电子设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
一种软件生成真随机数算法的设计和实现;梁云杰;李蕾;赵普;李栋;;计算机与信息技术(04);95-96+105 *
刘攀 ; 陈天宇 ; 吕娜 ; 马原 ; 荆继武.一种带有熵监控功能的软件随机数发生器.中国科学院大学学报.2020,835-847. *

Also Published As

Publication number Publication date
CN116243887A (zh) 2023-06-09

Similar Documents

Publication Publication Date Title
Marechal Advances in password cracking
US20160373249A1 (en) Encryption method and encryption device
CN108599934B (zh) 一种用于量子密钥分发的可验安全保密增强方法
WO2019114122A1 (zh) 登录信息的加密方法、装置、电子设备及介质
KR102154164B1 (ko) 의사 랜덤 시퀀스 생성 방법 및 데이터 스트림의 코딩 또는 디코딩 방법
AU2021200062B2 (en) Systems and computer-implemented methods for generating pseudo random numbers
CN111325535A (zh) 基于椭圆曲线偏移的区块链私钥管理方法、系统及存储介质
US9594918B1 (en) Computer data protection using tunable key derivation function
CN109683851A (zh) 随机数的生成方法、随机数生成装置、计算机存储介质
CN115714644B (zh) 一种随机数生成方法及装置
CN112580114A (zh) 一种信息处理方法、装置、设备及存储介质
CN116243887B (zh) 软件随机数生成方法及装置
JP5427117B2 (ja) メッセージ認証子生成装置、メッセージ認証子検証装置、メッセージ認証子生成方法、メッセージ認証子検証方法、およびプログラム
CN111711671A (zh) 一种基于盲存储的高效密文文件更新的云存储方法
CN113098675A (zh) 基于多项式完全同态的二进制数据加密系统及方法
Gorbenko et al. Methods of building general parameters and keys for NTRU Prime Ukraine of 5 th–7 th levels of stability. Product form
Noaman A VHDL model for implementation of MD5 hash algorithm
CN114244517A (zh) 数据加密及签名方法、装置、计算机设备和存储介质
CN111314061A (zh) 一种随机数的生成方法及系统
Du et al. Database Padding for Dynamic Symmetric Searchable Encryption
KR102236242B1 (ko) 퍼지 추출기를 이용한 공개값 생성 방법 및 그 공개값과 2차 입력값을 입력받아 비밀키를 생성하는 방법
WO2022267038A1 (zh) 随机序列生成的方法、装置、设备和介质
CN111193584B (zh) 基于操作系统的敏感数据的加密方法及装置、存储介质
CN115801227B (zh) 一种生成置换表的方法及装置
Lukács et al. BITMIX: A hardware accelerated randomized symmetric encryption method

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