CN117390610A - 一种身份标识生成方法、系统及装置 - Google Patents
一种身份标识生成方法、系统及装置 Download PDFInfo
- Publication number
- CN117390610A CN117390610A CN202311703743.0A CN202311703743A CN117390610A CN 117390610 A CN117390610 A CN 117390610A CN 202311703743 A CN202311703743 A CN 202311703743A CN 117390610 A CN117390610 A CN 117390610A
- Authority
- CN
- China
- Prior art keywords
- random number
- identity
- segment
- section
- identification
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000015654 memory Effects 0.000 claims abstract description 22
- 238000004364 calculation method Methods 0.000 claims description 21
- 230000006870 function Effects 0.000 claims description 10
- 230000010365 information processing Effects 0.000 abstract description 2
- 238000005516 engineering process Methods 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 230000011218 segmentation Effects 0.000 description 3
- 241000533950 Leucojum Species 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000002265 prevention Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种身份标识生成方法、系统及装置,涉及信息处理技术领域,方法主要包括:步骤1、基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数;所述计数器,用于记录本段生成的身份标识码数量;步骤2、选取某个可用数据段,随机生成身份标识码,通过所述计数器统计本段身份标识码的数量,直至达到本段身份标识码的预设数量时,移除该数据段;步骤3、在剩余数据段中迭代执行步骤2,直至没有可用数据段。本方案可以预期时间复杂度,不会因为数据越来越多导致耗时越来越大,可以控制身份标识生成耗时、内存占用等情况,便于高并发环境使用。
Description
技术领域
本发明涉及信息处理技术领域,尤其是涉及一种身份标识生成方法、系统及装置。
背景技术
随着信息技术的不断发展,身份标识在商业、金融等各个领域得到了广泛应用。通过身份标识技术为用户分配唯一编号,可以更好、更安全的满足业务操作、身份验证、身份管理等需求。
目前,生成身份标识的常见方法有以下几种:UUID法,UUID是由32个十六进制数组成的字符串,其可读性差,不便于人类识别和记忆;利用存储系统的自增特性,如数据库自增、Redis自增函数,这种方法对存储系统的性能要求很高,而且具有连续性,容易被猜测出下一个值;雪花算法,这种算法对机器时钟敏感,存在时钟回拨等问题,其生成的身份标识是递增的,也容易被猜测出来。
这些常见身份标识生成方法,除了存在上述问题,还普遍存在着冲突率高、生成时间不恒定、生成性能低下等一系列问题。
发明内容
本发明的目的在于提供一种身份标识生成方法、系统及装置,以解决现有技术中存在的至少一种上述技术问题。
第一方面,为解决上述技术问题,本发明提供的一种身份标识生成方法,包括:
步骤1、基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数等;所述开始数位于本段的开始,所述结束数位于本段的末尾,这样可以确定本段的长短;所述计数器,用于记录本段生成的身份标识码数量;
步骤2、选取某个可用数据段,随机生成本段的身份标识码,通过所述计数器统计本段身份标识码的数量,直至达到本段身份标识码的预设数量时,移除该数据段;
步骤3、在剩余数据段中迭代执行步骤2,直至没有可用数据段。
通过上述方法,利用分段处理的方式,可以快速有效地得到身份标识,降低内存占用率,便于后序将不同的段分配至不同的实例上计算。
在一种可行的实施方式中,所述步骤2中随机生成身份标识码的具体方法包括:
步骤21、随机选取某个数据段,且该数据段所生成的身份标识码数量尚未达到所述预设数量;
步骤22、将前次随机数作为生成本次随机数的种子,通过随机数生成算法生成一个本次随机数;
步骤23、通过去重器检查该随机数是否已存在:若是,则执行步骤22;若否,则执行步骤24,以便使随机数唯一,并将该随机数存入去重器中,以便后续去重;
步骤24、将本段的开始数与该随机数进行求和运算,构成身份标识码。
通过上述方法,可得到唯一的身份标识码。
在一种可行的实施方式中,所述随机数生成算法为线性同余算法,该算法是一种基于模运算的随机数生成算法,通过一个线性递推式,利用一个种子值生成当前的随机数,随机数在取值范围内均匀随机分布,该算法具有算法简单、生成速度快、占用内存小等优点,可满足高并发场景下的身份标识生成需求。
在一种可行的实施方式中,所述线性递推式指每次生成随机数时,都将上一个随机数乘以一个常数a,再加上另一个常数 c,然后对一个模数 m 取模,得到的结果就是下一个随机数,具体公式可以为:
;
其中,表示第n个随机数;/>表示第n+1个随机数;a表示乘数,属于预设常数;c表示增量,属于预设常数;m表示模数,属于预设常数;mod表示取模运算。
在一种可行的实施方式中,所述a取值为69621,所述c取值为1,所述m取值为1000;这样可以使生成的随机数序列均匀。
在一种可行的实施方式中,所述数据段总数能够被所述身份标识码的需求总数整除,所述模数取值为段长度,即这样可以避免身份标识码的需求总数除以数据段总数时,由于不能整除,而产生难于处理余数数据段的问题,例如:1000个身份标识分为10段,每段100个身份标识码,则每段需生成100个随机数,每个随机数加开始数即可快速得到最终的身份标识码;而如果不能整除,比如分为30段,每段30个身份标识码,最后一段成为余数数据段,需生成10个随机数,这样就造成前面30段每段生成0~30的随机数,而最后一段需要区别处理,额外提高了处理的复杂度。
在一种可行的实施方式中,所述数据段总数至少为10段,这样可以避免数据段过少时,造成数据段很难被填满而削弱动态移除优势的问题。
在一种可行的实施方式中,所述去重器为布隆过滤器,所述布隆过滤器属于现有技术,是一种空间效率高的数据结构,其基于哈希函数,可以快速地判断一个元素是否存在于集合中。本方案中布隆过滤器的具体去重方法包括:
步骤a1、使用多个哈希函数对随机数进行哈希运算,得到多个哈希值,并将这些哈希值对应的位标记为1;
步骤a2、当判断一个随机数是否存在于集合中时,将该随机数进行哈希运算,得到多个哈希值;
步骤a3、检查多个哈希值对应的位是否都为1:若是,则该随机数已经存在;若否,则该随机数未曾存在。
在一种可行的实施方式中,所述段长度的范围:1000~2000;这样可以避免布隆过滤器由于哈希函数的哈希冲突,导致多个不同的元素被映射至同一个位上时出现的误判问题,段长度越长则误判的可能性越大,例如:布隆过滤器比较5000个元素时发生误判的次数比布隆过滤器比较1000个元素时发生误判的次数多。
在一种可行的实施方式中,每个布隆过滤器中插入1000条数据,误判率设置为0.0001,hash函数选择MurmurHash,所述MurmurHash具有高速度、低碰撞率的特点,可以有效降低哈希冲突。
通过上述布隆过滤器,利用其可去重、空间效率高、插入及查询速度快的特点,解决线性同余算法可能生成重复随机数的问题,从而保证了身份标识的唯一性;还可以储存大量数据,从而满足了高并发场景下的身份标识生成需求。
在一种可行的实施方式中,在预设若干数据段时,同时进行分布缓存,用于将多个数据段分散存储于多个节点上,以便有效减少单个节点的运算压力,提高系统的并发性能及稳定性。
在一种可行的实施方式中,所述分布缓存的方法为通过redis中间件实现分布缓存,所述redis属于现有技术,其将数据缓存在内存中,并周期性地将更新数据写入磁盘或者把修改操作写入追加的记录文件中,同时实现了主从同步。
第二方面,基于相同的发明构思,本申请还提供了一种身份标识生成系统,包括身份标识编码模块、段信息模块、随机数生成算法模块及去重器模块:
所述身份标识编码模块,基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数等;将所述开始数与所述随机数相加得到本段生成的身份标识码;所述计数器,用于记录本段生成的身份标识码数量;当本段中身份标识码的数量达到本段的预设数量时,移除该段;
所述段信息模块,用于从所述身份标识编码模块中随机获取一个可用数据段,提取本段中的开始数、结束数、计数器及前次计算因子等作为生成本次随机数的范围,并随机返回一个可用数据段;所述前次计算因子包括:若本段为首次使用,则前次计算因子为随机数生成算法模块当前种子所获取的随机数;若本段非首次使用,则前次计算因子为本段上一次生成的随机数;
所述随机数生成算法模块,用于将该可用数据段中的前次计算因子作为种子,计算得到本次随机数,并返回至该可用数据段;
所述去重器模块,用于检查所述随机数是否已存在:若是,则指令所述随机数生成算法模块重新生成随机数;若否,则保留该随机数,并将该随机数存入去重器模块中。
在一种可行的实施方式中,所述随机数生成算法模块通过线性同余算法,计算得到随机数。
在一种可行的实施方式中,所述去重器模块通过布隆过滤器,检查所述随机数是否已存在。
第三方面,基于相同的发明构思,本申请还提供了一种身份标识生成装置,包括处理器、存储器及总线,所述存储器存储可由处理器读取的指令及数据,所述处理器用于调用所述存储器中的指令及数据,以执行如上所述的任一一种身份标识生成方法,所述总线连接各功能部件之间传送信息。
采用上述技术方案,本发明具有如下有益效果:
本发明提供的一种身份标识生成方法、系统及装置,可生成均匀分布的随机数,具备防猜测性;可检查身份标识码的唯一性,避免生成重复的身份标识,保证身份标识码的准确性;可有效地降低身份标识生成的时间成本和系统负载,提高生成效率;可以预期时间复杂度,不会因为数据越来越多导致耗时越来越大,可以控制身份标识生成耗时、内存占用情况,提高了系统的可控性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种身份标识生成方法流程图;
图2为本发明实施例提供的随机生成身份标识码的具体流程图;
图3为本发明实施例提供的布隆过滤器去重方法流程图;
图4为本发明实施例提供的一种身份标识生成方法系统时序图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为便于理解本申请的具体实施例,先就本申请的发明构思进行简要说明如下:
为了解决背景技术中存在的技术问题,本申请通过随机数生成算法,设置合理的参数,生成可以均匀分布的随机数,从而具备防猜测性及保密性;采用去重器检查身份标识码的唯一性,可以避免生成重复的身份标识码,保证身份标识的准确性及安全性;基于分段思想及分布式缓存技术,可以有效地降低身份标识生成的时间成本和系统负载,提高生成效率,还可以预判时间复杂度,避免数据越来越多导致耗时越来越大的问题,从而控制生成时间、内存占用情况,提供了系统的整体可控性。
下面结合具体的实施方式对本发明做进一步的解释说明。
还需要说明的是,下述具体实施例或具体实施方式,是本发明为进一步解释具体的发明内容而列举的一系列优化的设置方式,而该些设置方式之间均是可以相互结合或者相互关联使用的。
实施例一:
如图1所示,本实施例提供的一种身份标识生成方法,包括:
步骤1、基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数等;所述开始数位于本段的开始,所述结束数位于本段的末尾,这样可以确定本段的长短;所述计数器,用于记录本段生成的身份标识码数量;
步骤2、选取某个可用数据段,随机生成本段的身份标识码,通过所述计数器统计本段身份标识码的数量,直至达到本段身份标识码的预设数量时,移除该数据段;
步骤3、在剩余数据段中迭代执行步骤2,直至没有可用数据段。
通过上述方法,利用分段处理的方式,可以快速有效地得到身份标识,降低内存占用率,便于后序将不同的段分配至不同的实例上计算。
进一步地,如图2所示,所述步骤2中随机生成身份标识码的具体方法包括:
步骤21、随机选取某个数据段,且该数据段所生成的身份标识码数量尚未达到所述预设数量;
步骤22、将前次随机数作为生成本次随机数的种子,通过随机数生成算法生成一个本次随机数;
步骤23、通过去重器检查该随机数是否已存在:若是,则执行步骤22;若否,则执行步骤24,以便使随机数唯一,并将该随机数存入去重器中,以便后续去重;
步骤24、将本段的开始数与该随机数进行求和运算,构成身份标识码。
通过上述方法,可得到唯一的身份标识码。
进一步地,所述随机数生成算法为线性同余算法,该算法是一种基于模运算的随机数生成算法,通过一个线性递推式,利用一个种子值生成当前的随机数,随机数在取值范围内均匀随机分布,该算法具有算法简单、生成速度快、占用内存小等优点,可满足高并发场景下的身份标识生成需求。
进一步地,所述线性递推式指每次生成随机数时,都将上一个随机数乘以一个常数a,再加上另一个常数 c,然后对一个模数 m 取模,得到的结果就是下一个随机数,具体公式可以为:
;
其中,表示第n个随机数;/>表示第n+1个随机数;a表示乘数,属于预设常数;c表示增量,属于预设常数;m表示模数,属于预设常数;mod表示取模运算。
进一步地,所述a取值为69621,所述c取值为1,所述m取值为1000;这样可以使生成的随机数序列均匀。
进一步地,所述数据段总数能够被所述身份标识码的需求总数整除,所述模数取值为段长度,所述段长度可以为结束数减去开始数,这样可以避免身份标识码的需求总数除以数据段总数时,由于不能整除,而产生难于处理余数数据段的问题,例如:1000个身份标识分为10段,每段100个身份标识码,则每段需生成100个随机数,每个随机数加开始数即可快速得到最终的身份标识码;而如果不能整除,比如分为30段,每段30个身份标识码,最后一段成为余数数据段,需生成10个随机数,这样就造成前面30段每段生成0~30的随机数,而最后一段需要区别处理,额外提高了处理的复杂度。
进一步地,所述数据段总数至少为10段,这样可以避免数据段过少时,造成数据段很难被填满而削弱动态移除优势的问题。
进一步地,所述去重器为布隆过滤器,所述布隆过滤器属于现有技术,是一种空间效率高的数据结构,其基于哈希函数,可以快速地判断一个元素是否存在于集合中。如图3所示,本方案中布隆过滤器的具体去重方法包括:
步骤a1、使用多个哈希函数对随机数进行哈希运算,得到多个哈希值,并将这些哈希值对应的位标记为1;
步骤a2、当判断一个随机数是否存在于集合中时,将该随机数进行哈希运算,得到多个哈希值;
步骤a3、检查多个哈希值对应的位是否都为1:若是,则该随机数已经存在;若否,则该随机数未曾存在。
进一步地,所述段长度的范围:1000~2000;这样可以避免布隆过滤器由于哈希函数的哈希冲突,导致多个不同的元素被映射至同一个位上时出现的误判问题,段长度越长则误判的可能性越大,例如:布隆过滤器比较5000个元素时发生误判的次数比布隆过滤器比较1000个元素时发生误判的次数多。
进一步地,每个布隆过滤器中插入1000条数据,误判率设置为0.0001,hash函数选择MurmurHash,所述MurmurHash具有高速度、低碰撞率的特点,可以有效降低哈希冲突。
通过上述布隆过滤器,利用其可去重、空间效率高、插入及查询速度快的特点,解决线性同余算法可能生成重复随机数的问题,从而保证了身份标识的唯一性;还可以储存大量数据,从而满足了高并发场景下的身份标识生成需求。
进一步地,在预设若干数据段时,同时进行分布缓存,用于将多个数据段分散存储于多个节点上,以便有效减少单个节点的运算压力,提高系统的并发性能及稳定性。
进一步地,所述分布缓存的方法为通过redis中间件实现分布缓存,所述redis属于现有技术,其将数据缓存在内存中,并周期性地将更新数据写入磁盘或者把修改操作写入追加的记录文件中,同时实现了主从同步。
实施例二:
如图4所示,本实施例提供了一种身份标识生成系统,包括身份标识编码模块、段信息模块、线性同余算法模块及布隆过滤器模块:
所述身份标识编码模块,基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数等;将所述开始数与所述随机数相加得到本段生成的身份标识码;所述计数器,用于记录本段生成的身份标识码数量;当本段中身份标识码的数量达到本段的预设数量时,移除该段;
所述段信息模块,用于从所述身份标识编码模块中随机获取一个可用数据段,提取本段中的开始数、结束数、计数器及前次计算因子等作为生成本次随机数的范围,并随机返回一个可用数据段;所述前次计算因子包括:若本段为首次使用,则前次计算因子为随机数生成算法模块当前种子所获取的随机数;若本段非首次使用,则前次计算因子为本段上一次生成的随机数;
所述线性同余算法模块,用于将该可用数据段中的前次计算因子作为种子,通过线性同余算法计算得到本次随机数,并返回至该可用数据段;
所述布隆过滤器模块,用于通过布隆过滤器检查所述随机数是否已存在:若是,则指令所述线性同余算法模块重新生成随机数;若否,则保留该随机数,并将该随机数存入去重器模块中。
实施例三:
本实施例提供了一种身份标识生成装置,包括处理器、存储器及总线,所述存储器存储可由处理器读取的指令及数据,所述处理器用于调用所述存储器中的指令及数据,以执行如上所述的任一一种身份标识生成方法,所述总线连接各功能部件之间传送信息。
本方案在又一种实施方式下,可以通过设备的方式来实现,该设备可以包括执行上述各个实施方式中各个或几个步骤的相应模块。模块可以是专门被配置为执行相应步骤的一个或多个硬件模块、或者由被配置为执行相应步骤的处理器来实现、或者存储在计算机可读介质内用于由处理器来实现、或者通过某种组合来实现。
处理器执行上文所描述的各个方法和处理。例如,本方案中的方法实施方式可以被实现为软件程序,其被有形地包含于机器可读介质,例如存储器。在一些实施方式中,软件程序的部分或者全部可以经由存储器和/或通信接口而被载入和/或安装。当软件程序加载到存储器并由处理器执行时,可以执行上文描述的方法中的一个或多个步骤。备选地,在其它实施方式中,处理器可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行上述方法之一。
该设备可以利用总线架构来实现。总线架构可以包括任何数量的互连总线和桥接器,这取决于硬件的特定应用和总体设计约束。总线将包括一个或多个处理器、存储器和/或硬件模块的各种电路连接到一起。总线还可以将诸如外围设备、电压调节器、功率管理电路、外部天线等的各种其它电路连接。
总线可以是工业标准体系结构(ISA,Industry Standard Architecture)总线、外部设备互连(PCI,Peripheral Component)总线或扩展工业标准体系结构(EISA,ExtendedIndustry Standard Component)总线等,总线可以分为地址总线、数据总线、控制总线等。
实施例四:
具体算例:
身份标识需求总数:10000000个;
算例具体实施步骤:
步骤b1、身份标识编码模块将身份标识需求总数进行分段,保存至段集合:将10000000分成10000段,每段可保存1000个身份标识码;
步骤b2、段信息模块定义数据结构并描述段信息:
包含本段中的开始数、结束数、前次计算因子及计数器,可以具体定义如下:
定义封装段信息的数据结构,包含:
本段中开始数,使用整数类型表示;
本段中结束数,使用整数类型表示;
本段中前次计算因子,使用整数类型表示;
本段使用数量计数器,使用整数类型表示;
上述定义文字的伪代码(Java语言)可以如下:
;
步骤b3、段信息模块用List集合保存段信息:将10000个段信息保存至List集合中;
步骤b4、段信息模块用List集合保存布隆过滤器模块:将10000个布隆过滤器保存到List集合中;
步骤b5、从段集合中随机选取一个数据段;
步骤b6、从List集合中获取本段相应的前次计算因子:
若本段是第一次使用,则本段中前次计算因子为当前时间作为线性同余算法的种子所获取的随机数;若本段不是第一次使用,则本段中前次计算因子为本段上一次生成的随机数;
步骤b7、通过线性同余算法生成随机数:
线性同余算法模块将上一次生成的随机数作为种子生成本次的随机数,从而保证了随机数在取值范围内均为随机分布;
步骤b8、将随机数保存至本段在List集合中对应的布隆过滤器中并进行去重:
通过所述布隆过滤器判断该随机数是否已经存在:若是,则返回重新生成随机数信息至线性同余算法模块;若否,则返回随机数可用信息至段集合,并将该随机数存入布隆过滤器中;
步骤b9、当接收到随机数可用信息时,本段对应List集合中计数器的数值自动加1,并迭代执行步骤b6:当计数器达到1000时,从List集合中移除本段对应的段信息,使List集合的长度减一并发送移除指令至身份标识编码模块;
步骤b10、身份标识编码模块接收到移除指令后,从段集合中移除本段,从而保证步骤b4中,从段集合中随机选取的一段均是未用完的可用时间段,提高了获取可用时间段的效率,在段选择问题上,保障其算法复杂度为O(1);
步骤b11、身份标识编码模块生成最终的身份标识码:
将当前随机数与List集合中本段对应的开始数相加,作为最终的身份标识码;
步骤b12、迭代执行b5,直至段集合为空,从而生成10000000个身份标识码。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种身份标识生成方法,其特征在于,包括:
步骤1、基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数;所述计数器,用于记录本段生成的身份标识码数量;
步骤2、选取某个可用数据段,随机生成身份标识码,通过所述计数器统计本段身份标识码的数量,直至达到本段身份标识码的预设数量时,移除该数据段;
步骤3、在剩余数据段中迭代执行步骤2,直至没有可用数据段。
2.根据权利要求1所述的方法,其特征在于,所述步骤2中随机生成身份标识码的具体方法包括:
步骤21、随机选取某个数据段,且该数据段所生成的身份标识码数量尚未达到所述预设数量;
步骤22、将前次随机数作为生成本次随机数的种子,通过随机数生成算法生成一个本次随机数;
步骤23、通过去重器检查该随机数是否已存在:若是,则执行步骤22;若否,则执行步骤24,并将该随机数存入去重器中;
步骤24、将本段的开始数与该随机数进行求和运算,构成身份标识码。
3.根据权利要求2所述的方法,其特征在于,所述步骤22中随机数生成算法为线性同余算法,具体公式为:
;
其中,表示第n个随机数;/>表示第n+1个随机数;a表示乘数,属于预设常数;c表示增量,属于预设常数;m表示模数,属于预设常数;mod表示取模运算。
4.根据权利要求3所述的方法,其特征在于,所述a取值为69621,所述c取值为1,所述m取值为1000。
5.根据权利要求3所述的方法,其特征在于,所述数据段总数能够被所述身份标识码需求总数整除,所述模数取值为段长度。
6.根据权利要求2所述的方法,其特征在于,所述步骤23中的去重器为布隆过滤器。
7.根据权利要求6所述的方法,其特征在于,每个布隆过滤器中插入1000条数据,误判率设置为0.0001,hash函数选择MurmurHash。
8.根据权利要求1所述的方法,其特征在于,在步骤1中预设若干数据段时,还包括通过redis中间件将多个数据段进行分布缓存。
9.一种身份标识生成系统,其特征在于,包括身份标识编码模块、段信息模块、随机数生成算法模块及去重器模块:
所述身份标识编码模块,基于身份标识需求总数,预设若干数据段,定义每段生成身份标识码的预设数量;每段包含本段的开始数、结束数、计数器及若干随机数;将所述开始数与所述随机数相加得到本段生成的身份标识码;所述计数器,用于记录本段生成的身份标识码数量;当本段中身份标识码的数量达到本段的预设数量时,移除该段;
所述段信息模块,用于从所述身份标识编码模块中随机获取一个可用数据段,提取本段中的开始数、结束数、计数器及前次计算因子作为生成本次随机数的范围,并随机返回一个可用数据段;
所述随机数生成算法模块,用于将该可用数据段中的前次计算因子作为种子,计算得到本次随机数,并返回至该可用数据段;
所述去重器模块,用于检查所述随机数是否已存在:若是,则指令所述随机数生成算法模块重新生成随机数;若否,则保留该随机数,并将该随机数存入去重器模块中。
10.一种身份标识生成装置,其特征在于,包括处理器、存储器及总线,所述存储器存储可由处理器读取的指令及数据,所述处理器用于调用所述存储器中的指令及数据,以执行如权利要求1~8中任一所述的方法,所述总线连接各功能部件之间传送信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311703743.0A CN117390610A (zh) | 2023-12-13 | 2023-12-13 | 一种身份标识生成方法、系统及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311703743.0A CN117390610A (zh) | 2023-12-13 | 2023-12-13 | 一种身份标识生成方法、系统及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117390610A true CN117390610A (zh) | 2024-01-12 |
Family
ID=89465301
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311703743.0A Pending CN117390610A (zh) | 2023-12-13 | 2023-12-13 | 一种身份标识生成方法、系统及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117390610A (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1702759A (zh) * | 2004-05-28 | 2005-11-30 | 汤姆森特许公司 | 非重复随机数生成方法 |
CN1874357A (zh) * | 2005-09-30 | 2006-12-06 | 华为技术有限公司 | 一种产生标识符的方法 |
CN102929967A (zh) * | 2012-10-12 | 2013-02-13 | 深圳市华阳信通科技发展有限公司 | 随机数生成、存储和搜索的系统及方法 |
CN109521997A (zh) * | 2018-11-16 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 用于共享存储多线程并行执行的随机数生成方法及装置 |
CN113296737A (zh) * | 2020-07-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 随机数的生成系统、方法、装置和云端服务器 |
CN113467753A (zh) * | 2020-12-31 | 2021-10-01 | 易百信息技术(上海)股份有限公司 | 一种分布式不重复随机序列生成方法和系统 |
CN113590606A (zh) * | 2021-09-27 | 2021-11-02 | 浙江九州量子信息技术股份有限公司 | 一种基于布隆过滤器的大数据量密钥去重方法及系统 |
CN114969666A (zh) * | 2022-06-02 | 2022-08-30 | 中国人民解放军国防科技大学 | 一种面向超级计算机的并行大数据生成方法 |
CN115934035A (zh) * | 2022-11-18 | 2023-04-07 | 中国电信股份有限公司 | 一种序列号生成方法、装置、电子设备及存储介质 |
CN116710890A (zh) * | 2021-03-26 | 2023-09-05 | 华为技术有限公司 | 随机数生成装置及生成方法、随机数生成系统、芯片 |
-
2023
- 2023-12-13 CN CN202311703743.0A patent/CN117390610A/zh active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1702759A (zh) * | 2004-05-28 | 2005-11-30 | 汤姆森特许公司 | 非重复随机数生成方法 |
CN1874357A (zh) * | 2005-09-30 | 2006-12-06 | 华为技术有限公司 | 一种产生标识符的方法 |
CN102929967A (zh) * | 2012-10-12 | 2013-02-13 | 深圳市华阳信通科技发展有限公司 | 随机数生成、存储和搜索的系统及方法 |
CN109521997A (zh) * | 2018-11-16 | 2019-03-26 | 中国人民解放军战略支援部队信息工程大学 | 用于共享存储多线程并行执行的随机数生成方法及装置 |
CN113296737A (zh) * | 2020-07-30 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 随机数的生成系统、方法、装置和云端服务器 |
CN113467753A (zh) * | 2020-12-31 | 2021-10-01 | 易百信息技术(上海)股份有限公司 | 一种分布式不重复随机序列生成方法和系统 |
CN116710890A (zh) * | 2021-03-26 | 2023-09-05 | 华为技术有限公司 | 随机数生成装置及生成方法、随机数生成系统、芯片 |
CN113590606A (zh) * | 2021-09-27 | 2021-11-02 | 浙江九州量子信息技术股份有限公司 | 一种基于布隆过滤器的大数据量密钥去重方法及系统 |
CN114969666A (zh) * | 2022-06-02 | 2022-08-30 | 中国人民解放军国防科技大学 | 一种面向超级计算机的并行大数据生成方法 |
CN115934035A (zh) * | 2022-11-18 | 2023-04-07 | 中国电信股份有限公司 | 一种序列号生成方法、装置、电子设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
(美)亚历克斯·彼得罗夫 著: "《数据库系统内幕》", 31 May 2020, 北京:机械工业出版社, pages: 132 * |
兰蓉 编著: "《计算金融:期权定价理论、方法与实践》", 30 June 2022, 西安电子科技大学出版社, pages: 139 - 140 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108334419B (zh) | 一种数据恢复的方法和装置 | |
CN110888603B (zh) | 高并发数据写入方法、装置、计算机设备及存储介质 | |
CN110659905B (zh) | 交易验证方法、装置、终端设备以及存储介质 | |
CN113300883B (zh) | 协议信息生成方法、装置和终端设备 | |
CN105991282B (zh) | 口令生成方法及装置 | |
CN114936227A (zh) | 数据校验方法、数据校验系统、电子设备及存储介质 | |
CN112256472B (zh) | 分布式数据调取方法、装置、电子设备及存储介质 | |
CN117390610A (zh) | 一种身份标识生成方法、系统及装置 | |
CN112883065A (zh) | 一种数据存储方法、装置及计算机设备 | |
CN115665137A (zh) | 一种数据处理方法及装置 | |
CN112579566B (zh) | 分布式id的生成方法及装置 | |
CN113377813A (zh) | 全局唯一标识码生成方法、设备、系统和计算机可读介质 | |
EP0661634A2 (en) | Tag server | |
CN115033544A (zh) | 一种基于关系数值的数据压缩方法、装置、设备和介质 | |
CN111444194B (zh) | 一种块链式账本中索引的清除方法、装置及设备 | |
CN112015325B (zh) | 一种生成解码矩阵的方法、解码方法和对应装置 | |
CN113540520A (zh) | 一种双电堆的异步启动方法及装置 | |
CN116880778B (zh) | 一种基于再生编码及分布式存储的用户隐私保护方法 | |
CN111274228B (zh) | 保单数据迁移存储方法、系统、设备及可读存储介质 | |
CN117079703B (zh) | 用于测试芯片内嵌存储器的方法及装置、电子设备 | |
CN116541428B (zh) | 一种用于数据库的序列号生成方法、装置、设备及介质 | |
CN118036045B (zh) | 标识生成方法、装置及计算机设备、存储介质、程序产品 | |
CN113890741B (zh) | 消息填充方法、芯片、装置、电子设备和存储介质 | |
CN112732174B (zh) | 数据的处理方法和装置、电子设备和存储介质 | |
CN113641308B (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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20240112 |