CN112579566B - 分布式id的生成方法及装置 - Google Patents
分布式id的生成方法及装置 Download PDFInfo
- Publication number
- CN112579566B CN112579566B CN202011465364.9A CN202011465364A CN112579566B CN 112579566 B CN112579566 B CN 112579566B CN 202011465364 A CN202011465364 A CN 202011465364A CN 112579566 B CN112579566 B CN 112579566B
- Authority
- CN
- China
- Prior art keywords
- code
- distributed
- check
- value
- bit
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Bioethics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Storage Device Security (AREA)
Abstract
本发明提供的分布式ID的生成方法及装置,方法包括:在当前服务本次需要生成一个分布式ID时,生成初始编码;利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;所述生成校验码,包括:从所述初始编码中进行数字采样,得到至少一个采样数字;将所述至少一个采样数字处理成一个十进制采样值;根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;将所述十进制采样值对所述十进制校验值进行取余计算;将取余计算得到的结果确定为与所述校验位对应的校验码。本方案,能够降低被穷举破解的风险。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及分布式ID的生成方法及装置。
背景技术
分布式系统中,为了防止数据表占用过大的物理存储空间,经常采用分库分表相关技术。为便于分辨和管理,针对数据库中的数据表在生成分布式ID时,需要该分布式ID的全局唯一。
目前有一种采用雪花算法生成分布式ID的方法,利用雪花算法生成的分布式ID具有有序性,可以提升数据库索引效率,但是正因为其有序性,可以通过穷举方式对分布式ID进行破解,利用破解的分布式ID可以实现数据访问,获取该分布式ID对应的数据。
因此,需要提供一种分布式ID的生成方法,以降低被穷举破解的风险。
发明内容
本发明实施例提供了一种分布式ID的生成方法及装置,以降低被穷举破解的风险。
第一方面,本发明实施例提供了分布式ID的生成方法,包括:
在当前服务本次需要生成一个分布式ID时,生成初始编码;
利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;
将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;
所述生成校验码,包括:
从所述初始编码中进行数字采样,得到至少一个采样数字;
将所述至少一个采样数字处理成一个十进制采样值;
根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;
将所述十进制采样值对所述十进制校验值进行取余计算;
将取余计算得到的结果确定为与所述校验位对应的校验码。
优选地,
在所述从所述初始编码中进行数字采样之前,进一步包括:将所述初始编码转换成十进制的值;
从所述十进制的值中执行所述进行数字采样;
所述将所述至少一个采样数字处理成一个十进制采样值,包括:
针对所述至少一个采样数字中的每一个采样数字,将该采样数字乘以第一设定值,将乘积除以第二设定值得到商值,以及将该乘积对第三设定值取余计算得到取余值,将该商值与该取余值相加,得到至少一个变换后的采样数字;
将所述至少一个变换后的采样数字相加,并对相加后得到的值乘以第四设定值,得到所述十进制采样值。
优选地,
进一步包括:配置所述初始编码和所述校验码在所述分布式ID中的位置;其中,所述初始编码在所述分布式ID的首端,所述校验码在所述分布式ID的尾端;
将所述初始编码和所述校验码进行合成,包括:将所述初始编码按照所述校验位的位数左移;将左移后的所述初始编码与所述校验码按位或运算。
优选地,
所述初始编码包括以下编码区间:符号位、时间戳位、服务位和序列号位;
进一步包括:配置所述每一个编码区间在所述分布式ID中的位置,以及,配置每一个编码区间的位数;
所述生成与所述编码位对应的初始编码,包括:
获取所述当前服务对应的唯一服务编码,将所述唯一服务编码放置在本次需要生成的分布式ID的所述服务位上;
根据所述唯一服务编码,确定所述当前服务上一次生成的分布式ID中序列号位的编码是否为最大编码;
若否,将所述上一次生成的分布式ID中序列号位的编码加1后得到的编码放置在本次需要生成的分布式ID的所述序列号位上,以及将所述上一次生成的分布式ID中时间戳位的编码放置在本次需要生成的分布式ID的所述时间戳位上;
若是,则确定当前时间点到设定时间点的差值,将该差值对应的二进制编码放置在本次需要生成的分布式ID的所述时间戳位上,将本次需要生成的分布式ID的序列号位上设置为最小编码;
将本次需要生成的分布式ID的符号位设置为预设值。
第二方面,本发明实施例还提供了分布式ID的校验方法,包括;
接收用户在进行数据访问时输入的分布式ID;
从所述分布式ID中提取出初始编码和待校验的第一校验码;
利用所述初始编码,按照分布式ID在生成时使用的校验码生成规则,生成第二校验码;
在所述第一校验码与所述第二校验码相同时,则确定所述分布式ID合法,否则,确定所述分布式ID不合法。
第三方面,本发明实施例还提供了分布式ID的生成装置,包括:
初始编码生成单元,用于在当前服务本次需要生成一个分布式ID时,生成初始编码;
校验码生成单元,用于利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;
合成单元,用于将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;
所述校验码生成单元,具体用于执行如下操作:
从所述初始编码中进行数字采样,得到至少一个采样数字;
将所述至少一个采样数字处理成一个十进制采样值;
根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;
将所述十进制采样值对所述十进制校验值进行取余计算;
将取余计算得到的结果确定为与所述校验位对应的校验码。
优选地,
进一步包括:转换单元,用于将所述初始编码转换成十进制的值;
所述校验码生成单元用于从所述十进制的值中执行所述进行数字采样;
所述校验码生成单元在执行所述将所述至少一个采样数字处理成一个十进制采样值时,包括:针对所述至少一个采样数字中的每一个采样数字,将该采样数字乘以第一设定值,将乘积除以第二设定值得到商值,以及将该乘积对第三设定值取余计算得到取余值,将该商值与该取余值相加,得到至少一个变换后的采样数字;将所述至少一个变换后的采样数字相加,并对相加后得到的值乘以第四设定值,得到所述十进制采样值;
优选地,进一步包括:第一配置单元,用于配置所述初始编码和所述校验码在所述分布式ID中的位置;其中,所述初始编码在所述分布式ID的首端,所述校验码在所述分布式ID的尾端;
所述合成单元,具体用于:将所述初始编码按照所述校验位的位数左移;将左移后的所述初始编码与所述校验码按位或运算。
优选地,
所述初始编码包括以下编码区间:符号位、时间戳位、服务位和序列号位;
进一步包括:第二配置单元,用于配置所述每一个编码区间在所述分布式ID中的位置,以及,配置每一个编码区间的位数;
所述初始编码生成单元,具体用于:
获取所述当前服务对应的唯一服务编码,将所述唯一服务编码放置在本次需要生成的分布式ID的所述服务位上;
根据所述唯一服务编码,确定所述当前服务上一次生成的分布式ID中序列号位的编码是否为最大编码;
若否,将所述上一次生成的分布式ID中序列号位的编码加1后得到的编码放置在本次需要生成的分布式ID的所述序列号位上,以及将所述上一次生成的分布式ID中时间戳位的编码放置在本次需要生成的分布式ID的所述时间戳位上;
若是,则确定当前时间点到设定时间点的差值,将该差值对应的二进制编码放置在本次需要生成的分布式ID的所述时间戳位上,将本次需要生成的分布式ID的序列号位上设置为最小编码;
将本次需要生成的分布式ID的符号位设置为预设值。
第四方面,本发明实施例还提供了分布式ID的校验装置,包括;
接收单元,用于接收用户在进行数据访问时输入的分布式ID;
提取单元,用于从所述分布式ID中提取出初始编码和待校验的第一校验码;
生成单元,用于利用所述初始编码,按照分布式ID在生成时使用的校验码生成规则,生成第二校验码;
验证单元,用于在所述第一校验码与所述第二校验码相同时,则确定所述分布式ID合法,否则,确定所述分布式ID不合法。
第五方面,本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述任一项所述的方法。
本发明实施例提供了一种分布式ID的生成方法及装置,在生成初始编码之后,利用该初始编码按照预先设置的校验码生成规则,生成校验码,将初始编码与校验码合成为分布式ID,虽然初始编码具有有序性,但是校验码是按照一定规则生成的,且与初始编码有关,因此,校验码不具有有序性,在利用穷举方式破解分布式ID时,工作量会非常大,因此,本方案可以降低被穷举破解的风险。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种分布式ID的生成方法的流程图;
图2是本发明一个实施例提供的一个分布式ID对应的各个编码区间的位置示意图;
图3是本发明一个实施例提供的一种分布式ID的校验方法的流程图;
图4是本发明一个实施例提供的一种分布式ID的生成装置结构示意图;
图5是本发明一个实施例提供的另一种分布式ID的生成装置结构示意图;
图6是本发明一个实施例提供的又一种分布式ID的生成装置结构示意图;
图7是本发明一个实施例提供的再一种分布式ID的生成装置结构示意图;
图8是本发明一个实施例提供的一种分布式ID的校验装置结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,本发明一个实施例提供的分布式ID的生成方法,包括:
步骤101:在当前服务本次需要生成一个分布式ID时,根据预先配置的编码位的位数,生成与所述编码位对应的初始编码;
步骤102:利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;
步骤103:将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;
步骤102中,所述生成校验码,包括:
S1:从所述初始编码中进行数字采样,得到至少一个采样数字;
S2:将所述至少一个采样数字处理成一个十进制采样值;
S3:根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;
S4:将所述十进制采样值对所述十进制校验值进行取余计算;
S5:将取余计算得到的结果确定为与所述校验位对应的校验码;
本发明实施例中,在生成初始编码之后,利用该初始编码按照预先设置的校验码生成规则,生成校验码,将初始编码与校验码合成为分布式ID,虽然初始编码具有有序性,但是校验码是按照一定规则生成的,且与初始编码有关,因此,校验码不具有有序性,在利用穷举方式破解分布式ID时,工作量会非常大,因此,本方案可以降低被穷举破解的风险。
校验码生成规则为预先设置好的规则,每个服务在需要生成分布式ID时,均需要按照该校验码生成规则来生成校验码。
在S1中,从所述初始编码中进行数字采样时,该采样可以对应多种方式,例如,每隔一位取一个数字,或者每隔一位取两个数字,或者,分别取出第一位、第二位、第五位……的数字,等等,但需要将采样方式确定好写入校验码生成规则中。
由于初始编码为二进制编码,从该二进制编码中进行数字采样时,得到的采样数字为1或0,那么利用0、1生成的校验码重复率会很高,因此,在本发明一个实施例中,在所述从所述初始编码中进行数字采样之前,可以进一步包括:将所述初始编码转换成十进制的值;从所述十进制的值中执行所述进行数字采样。如此,采样数字可以为0-9中任一个数字,在利用从0-9中采样得到的采样数字生成校验码时,相对于利用0、1生成的校验码,会降低生成的校验码的重复率。
可以理解,在S2中,将所述至少一个采样数字处理成一个十进制采样值,该处理方式也可以对应多种方式,但需要将处理方式确定好,并写入校验码生成规则中,以使在执行将所述至少一个采样数字处理成一个采样值时,按照确定好的处理方式进行处理。
在本发明一个实施例中,在S2中,所述将所述至少一个采样数字处理成一个十进制采样值,可以利用如下一种处理方式,包括:
针对所述至少一个采样数字中的每一个采样数字,将该采样数字乘以第一设定值,将乘积除以第二设定值得到商值,以及将该乘积对第三设定值取余计算得到取余值,将该商值与该取余值相加,得到至少一个变换后的采样数字;
将所述至少一个变换后的采样数字相加,并对相加后得到的值乘以第四设定值,得到所述十进制采样值。
由于该处理方式中对该至少一个采样数字进行了复杂的计算,因此,可以进一步降低被穷举破解的风险。
在S3中,若校验位对应的位数为n位(其中n为大于等于1的整数),那么校验位对应最大编码时的十进制校验值为2n-1。例如,校验位对应的位数为5位,那么校验位对应的最大编码为11111,该最大编码的十进制校验值为31。
在S4中,由于需要根据得到的十进制采样值生成校验码,而校验码有位数设定,因此,需要保证生成的校验码能够放置在该设定的校验码的位数上,即生成的校验码不能大于该最大编码的十进制校验值,因此,将十进制采样值对十进制校验值进行取余计算。
在S5中,取余计算后得到的为一个十进制数值,将该取余计算后得到的十进制数值转换为二进制数值,则为本次需要生成的分布式ID的校验码。
例如,十进制采样值为47,对应最大编码的十进制校验值为31,那么取余计算后得到的值是16,将该值转换成二进制数值为10000,那么校验码为10000。
在将初始编码和校验码合成为分布式ID时,需要根据配置位置进行合成,初始编码和校验码在分布式ID中的位置为预先配置的,例如,在本发明一个实施例中,初始编码在分布式ID的首端,校验码在分布式ID的尾端;或者,初始编码在分布式ID的尾端,校验码在分布式ID的首端,再或者,校验码插入在初始编码中间。
以初始编码在分布式ID的首端,校验码在分布式ID的尾端为例,将所述初始编码和所述校验码进行合成,包括:将所述初始编码按照所述校验位的位数左移;将左移后的所述初始编码与所述校验码按位或运算。
其中,按位或运算符“|”是双目运算符。其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1。当参与运算的是负数时,参与两个数均以补码出现。
例如,初始编码为01100000000000000000011001010000100011100000100001000001000,校验码为10000,那么将初始编码左移5位后,得到:0110000000000000000001100101000010001110000010000100000100000000;在将得到的该二进制码与校验码10000按位或运算,即从低位开始运算,得到校验码:0110000000000000000001100101000010001110000010000100000100010000。
在本发明一个实施例中,初始编码是用来实现生成不同分布式ID时保证生成的分布式ID的唯一性,具体地,该初始编码可以包括以下编码区间:符号位、时间戳位、服务位和序列号位;其中,为了生成初始编码,进一步包括:配置所述每一个编码区间在所述分布式ID中的位置,以及,配置每一个编码区间的位数。
例如,上述编码区间在分布式ID中的位置为:从首端到尾端依次为符号位、时间戳位、服务位和序列号位。
上述各个编码区间的位数以及校验位的位数可以根据服务的需要灵活配置,只需保证配置完成后,分布式ID生成时按照该配置的位数进行生成,保证生成的分布式ID的统一性。
优选地,以分布式ID为64bit为例,各个编码区间的位数可以配置为:符号位为1bit,时间戳位为32bit,服务位为16bit,序列号位为10bit,那么校验位为5bit。以校验位位于分布式ID的尾端为例,请参考图2,为一个分布式ID对应的各个编码区间的位置图。
针对初始编码对应的上述各个编码区间,分别描述各个编码区间的编码生成策略。
1、符号位。
可以用符号位来表征分布式ID的正负,由于数据库中数据表的ID通常采用正整数,那么可以设定该符号位为一个固定的设定值0或1,来表示分布式ID为一个正数,例如,该设定值为0。
2、时间戳位。
在算法实现时,可以配置一个设定时间点作为固定的起始时间点,在生成时间戳位时,将生成时间戳位的当前时间点与该设定时间点的差值对应的二进制编码作为时间戳位的编码。其中,该差值的计算单位是毫秒、秒还是分钟,需要根据服务在计算单位对应的时间段内生成分布式ID的数量需求来设置,例如,以序列号位为10bit为例,若该差值的计算单位为秒,那么一个服务在1秒内可以生成1024个分布式ID,若差值的计算单位为毫秒,那么一个服务1毫秒内可以生成1024个分布式ID。
本发明实施例中可以将该计算单位设置为秒。在时间戳位为32bit时,以该分布式ID的生成方法生成分布式ID时,可以使用4294967296秒,约136年。
该设定时间点的配置,距离首次使用时越近越好,距离首次使用时越近,该分布式ID生成方法可以使用的时间越长。
在上一次生成的分布式ID的时间戳位对应了最大编码之后,下一次生成的分布式ID可以将上一次生成的分布式ID的时间点作为该设定时间点,继续按照该生成策略生成分布式ID。
3、服务位。
针对每个独立的服务都配置一个唯一服务编码,避免不同服务生成相同的ID。在为服务分配唯一服务编码时,可以创建一个服务编码分配表,该服务编码分配表中包括服务所属服务器的IP、服务端口号,以及对应的唯一服务编码。在服务启动时,先利用所属服务器的IP和服务端口号,在服务编码分配表中查找,是否存在与该所属服务器的IP和服务端口号对应的唯一服务编码,若存在,则从该服务编码分配表中获取该对应的唯一服务编码,若不存在,则将该所属服务器的IP和服务端口号存入服务编码分配表中,并按照编码递增策略,增加一个唯一服务编码,将新增加的唯一服务编码确定为该服务的唯一服务编码。
4、序列号位。
序列号位用于记录每个服务在每个时间计算单位(每秒)内产生不同的分布式ID,该服务每产生一个分布式ID,该序列号位加1。
针对上述各个编码区间的编码生成策略,具体地,所述生成与所述编码位对应的初始编码,包括:
获取所述当前服务对应的唯一服务编码,将所述唯一服务编码放置在本次需要生成的分布式ID的所述服务位上;
根据所述唯一服务编码,确定所述当前服务上一次生成的分布式ID中序列号位的编码是否为最大编码;
若否,将所述上一次生成的分布式ID中序列号位的编码加1后得到的编码放置在本次需要生成的分布式ID的所述序列号位上,以及将所述上一次生成的分布式ID中时间戳位的编码放置在本次需要生成的分布式ID的所述时间戳位上;
若是,则确定当前时间点到设定时间点的差值,将该差值对应的二进制编码放置在本次需要生成的分布式ID的所述时间戳位上,将本次需要生成的分布式ID的序列号位上设置为最小编码;
将本次需要生成的分布式ID的符号位设置为预设值。
以上完成了服务生成分布式ID的过程,由于校验位是利用初始编码生成的,因此校验码不具有有序性,因此,在穷举破解时,初始编码与校验码的组合会非常多,工作量非常大,因此,可以降低穷举破解的风险。
请参考图3,本发明实施例还提供了一种分布式ID的校验方法,该方法可以包括;
步骤301:接收用户在进行数据访问时输入的分布式ID;
步骤302:从所述分布式ID中提取出初始编码和待校验的第一校验码;
步骤303:利用所述初始编码,按照分布式ID在生成时使用的校验码生成规则,生成第二校验码;
步骤304:在所述第一校验码与所述第二校验码相同时,则确定所述分布式ID合法,否则,确定所述分布式ID不合法。
其中,从所述分布式ID中提取出初始编码和待校验的第一校验码时,需要根据分布式ID生成策略中初始编码和校验码的位数以及在分布式ID中的位置进行提取,例如,分布式ID生成策略中规定,初始编码为59bit,校验码为5bit,且初始编码位于分布式ID的首端,校验码位于分布式ID的尾端,那么可以直接提取该分布式ID首端的59bit的编码确定为初始编码,提取该分布式ID尾端的5bit的编码确定为校验码。
需要说明的是,在生成第二校验码时,需要按照该分布式ID在生成时使用的校验码生成规则生成,如此可以保证生成的第二校验码为准确的校验码。
在用户进行数据访问时,传统方式是对用户的权限进行验证,该验证任务量较大,而在本发明实施例中,通过对分布式ID的合法性进行校验,将使用不合法分布式ID的用户确定为无权限用户,对使用合法分布式ID的用户在进行权限验证,从而可以利用对分布式ID合法性的校验过滤掉一大部分无权限用户,从而可以提高验证效率。
请参考图4,本发明实施例还提供了一种分布式ID的生成装置,包括:
初始编码生成单元401,用于在当前服务本次需要生成一个分布式ID时,生成初始编码;
校验码生成单元402,用于利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;
合成单元403,用于将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;
所述校验码生成单元402,具体用于执行如下操作:
从所述初始编码中进行数字采样,得到至少一个采样数字;
将所述至少一个采样数字处理成一个十进制采样值;
根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;
将所述十进制采样值对所述十进制校验值进行取余计算;
将取余计算得到的结果确定为与所述校验位对应的校验码。
在一个实施例中,请参考图5,该装置可以进一步包括:转换单元501,用于将所述初始编码转换成十进制的值;
所述校验码生成单元402,用于从所述十进制的值中执行所述进行数字采样;
所述校验码生成单元402在执行所述将所述至少一个采样数字处理成一个十进制采样值时,包括:针对所述至少一个采样数字中的每一个采样数字,将该采样数字乘以第一设定值,将乘积除以第二设定值得到商值,以及将该乘积对第三设定值取余计算得到取余值,将该商值与该取余值相加,得到至少一个变换后的采样数字;将所述至少一个变换后的采样数字相加,并对相加后得到的值乘以第四设定值,得到所述十进制采样值;
在一个实施例中,请参考图6,该装置可以进一步包括:第一配置单元601,用于配置所述初始编码和所述校验码在所述分布式ID中的位置;其中,所述初始编码在所述分布式ID的首端,所述校验码在所述分布式ID的尾端;
所述合成单元403,具体用于:将所述初始编码按照所述校验位的位数左移;将左移后的所述初始编码与所述校验码按位或运算。
在一个实施例中,所述初始编码包括以下编码区间:符号位、时间戳位、服务位和序列号位;
请参考图7,该装置可以进一步包括:第二配置单元701,用于配置所述每一个编码区间在所述分布式ID中的位置,以及,配置每一个编码区间的位数;
所述初始编码生成单元401,具体用于:
获取所述当前服务对应的唯一服务编码,将所述唯一服务编码放置在本次需要生成的分布式ID的所述服务位上;
根据所述唯一服务编码,确定所述当前服务上一次生成的分布式ID中序列号位的编码是否为最大编码;
若否,将所述上一次生成的分布式ID中序列号位的编码加1后得到的编码放置在本次需要生成的分布式ID的所述序列号位上,以及将所述上一次生成的分布式ID中时间戳位的编码放置在本次需要生成的分布式ID的所述时间戳位上;
若是,则确定当前时间点到设定时间点的差值,将该差值对应的二进制编码放置在本次需要生成的分布式ID的所述时间戳位上,将本次需要生成的分布式ID的序列号位上设置为最小编码;
将本次需要生成的分布式ID的符号位设置为预设值。
请参考图8,本发明实施例还提供了一种分布式ID的校验装置,包括;
接收单元801,用于接收用户在进行数据访问时输入的分布式ID;
提取单元802,用于从所述分布式ID中提取出初始编码和待校验的第一校验码;
生成单元803,用于利用所述初始编码,按照分布式ID在生成时使用的校验码生成规则,生成第二校验码;
验证单元804,用于在所述第一校验码与所述第二校验码相同时,则确定所述分布式ID合法,否则,确定所述分布式ID不合法。
本发明实施例还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述实施例中任一项所述的方法。
综上所述,本发明各个实施例至少具有如下有益效果:
1、在本发明实施例中,在生成初始编码之后,利用该初始编码按照预先设置的校验码生成规则,生成校验码,将初始编码与校验码合成为分布式ID,虽然初始编码具有有序性,但是校验码是按照一定规则生成的,且与初始编码有关,因此,校验码不具有有序性,在利用穷举方式破解分布式ID时,工作量会非常大,因此,本方案可以降低被穷举破解的风险。
2、在本发明实施例中,在用户利用分布式ID进行数据访问时,可以对该分布式ID的校验码进行合法性验证,以使在遇到穷举法暴力破解时,可以有效的减少数据库的访问次数。
3、在本发明实施例中,通过在分布式ID中增加一个校验码,可以减少服务在生成分布式ID时对生成策略的依赖。
4、在本发明实施例中,根据服务需要可以对分布式ID中各个编码区间和校验码的位数进行配置,如果提升校验位的位数,可以提升分布式ID的安全性,如果提升序列号位的位数,可以提升分布式ID的生成数量,如果提升时间戳位的位数,可以提高分布式ID的使用年限,如果提升服务位的位数可以增加并发运行的服务实例数。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃····〃”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (9)
1.分布式ID的生成方法,其特征在于,包括:
在当前服务本次需要生成一个分布式ID时,生成初始编码;
利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;
将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;
所述生成校验码,包括:
从所述初始编码中进行数字采样,得到至少一个采样数字;
将所述至少一个采样数字处理成一个十进制采样值;
根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;
将所述十进制采样值对所述十进制校验值进行取余计算;
将取余计算得到的结果确定为与所述校验位对应的校验码;
在所述从所述初始编码中进行数字采样之前,进一步包括:将所述初始编码转换成十进制的值;
从所述十进制的值中执行所述进行数字采样;
所述将所述至少一个采样数字处理成一个十进制采样值,包括:
针对所述至少一个采样数字中的每一个采样数字,将该采样数字乘以第一设定值,将乘积除以第二设定值得到商值,以及将该乘积对第三设定值取余计算得到取余值,将该商值与该取余值相加,得到至少一个变换后的采样数字;
将所述至少一个变换后的采样数字相加,并对相加后得到的值乘以第四设定值,得到所述十进制采样值。
2.根据权利要求1所述的方法,其特征在于,
进一步包括:配置所述初始编码和所述校验码在所述分布式ID中的位置;其中,所述初始编码在所述分布式ID的首端,所述校验码在所述分布式ID的尾端;
将所述初始编码和所述校验码进行合成,包括:将所述初始编码按照所述校验位的位数左移;将左移后的所述初始编码与所述校验码按位或运算。
3.根据权利要求1-2中任一所述的方法,其特征在于,
所述初始编码包括以下编码区间:符号位、时间戳位、服务位和序列号位;
进一步包括:配置所述每一个编码区间在所述分布式ID中的位置,以及,配置每一个编码区间的位数;
所述生成与编码位对应的初始编码,包括:
获取所述当前服务对应的唯一服务编码,将所述唯一服务编码放置在本次需要生成的分布式ID的所述服务位上;
根据所述唯一服务编码,确定所述当前服务上一次生成的分布式ID中序列号位的编码是否为最大编码;
若否,将所述上一次生成的分布式ID中序列号位的编码加1后得到的编码放置在本次需要生成的分布式ID的所述序列号位上,以及将所述上一次生成的分布式ID中时间戳位的编码放置在本次需要生成的分布式ID的所述时间戳位上;
若是,则确定当前时间点到设定时间点的差值,将该差值对应的二进制编码放置在本次需要生成的分布式ID的所述时间戳位上,将本次需要生成的分布式ID的序列号位上设置为最小编码;
将本次需要生成的分布式ID的符号位设置为预设值。
4.分布式ID的校验方法,其特征在于,用于校验使用权利要求1-3任一所述的分布式ID的生成方法生成的ID;
接收用户在进行数据访问时输入的分布式ID;
从所述分布式ID中提取出初始编码和待校验的第一校验码;
利用所述初始编码,按照分布式ID在生成时使用的校验码生成规则,生成第二校验码;
在所述第一校验码与所述第二校验码相同时,则确定所述分布式ID合法,否则,确定所述分布式ID不合法。
5.分布式ID的生成装置,其特征在于,装置使用权利要求1-3任一所述的分布式ID的生成方法生成ID;
包括:
初始编码生成单元,用于在当前服务本次需要生成一个分布式ID时,生成初始编码;
校验码生成单元,用于利用所述初始编码,以及根据预先设置的校验码生成规则,生成校验码;
合成单元,用于将所述初始编码和所述校验码进行合成,得到本次需要生成的分布式ID;
所述校验码生成单元,具体用于执行如下操作:
从所述初始编码中进行数字采样,得到至少一个采样数字;
将所述至少一个采样数字处理成一个十进制采样值;
根据预先配置的校验位对应的位数,计算出所述校验位对应最大编码时的十进制校验值;
将所述十进制采样值对所述十进制校验值进行取余计算;
将取余计算得到的结果确定为与所述校验位对应的校验码。
6.根据权利要求5所述的装置,其特征在于,
进一步包括:转换单元,用于将所述初始编码转换成十进制的值;
所述校验码生成单元用于从所述十进制的值中执行所述进行数字采样;
所述校验码生成单元在执行所述将所述至少一个采样数字处理成一个十进制采样值时,包括:针对所述至少一个采样数字中的每一个采样数字,将该采样数字乘以第一设定值,将乘积除以第二设定值得到商值,以及将该乘积对第三设定值取余计算得到取余值,将该商值与该取余值相加,得到至少一个变换后的采样数字;将所述至少一个变换后的采样数字相加,并对相加后得到的值乘以第四设定值,得到所述十进制采样值;
和/或,
进一步包括:第一配置单元,用于配置所述初始编码和所述校验码在所述分布式ID中的位置;其中,所述初始编码在所述分布式ID的首端,所述校验码在所述分布式ID的尾端;
所述合成单元,具体用于:将所述初始编码按照所述校验位的位数左移;将左移后的所述初始编码与所述校验码按位或运算。
7.根据权利要求5所述的装置,其特征在于,
所述初始编码包括以下编码区间:符号位、时间戳位、服务位和序列号位;
进一步包括:第二配置单元,用于配置所述每一个编码区间在所述分布式ID中的位置,以及,配置每一个编码区间的位数;
所述初始编码生成单元,具体用于:
获取所述当前服务对应的唯一服务编码,将所述唯一服务编码放置在本次需要生成的分布式ID的所述服务位上;
根据所述唯一服务编码,确定所述当前服务上一次生成的分布式ID中序列号位的编码是否为最大编码;
若否,将所述上一次生成的分布式ID中序列号位的编码加1后得到的编码放置在本次需要生成的分布式ID的所述序列号位上,以及将所述上一次生成的分布式ID中时间戳位的编码放置在本次需要生成的分布式ID的所述时间戳位上;
若是,则确定当前时间点到设定时间点的差值,将该差值对应的二进制编码放置在本次需要生成的分布式ID的所述时间戳位上,将本次需要生成的分布式ID的序列号位上设置为最小编码;
将本次需要生成的分布式ID的符号位设置为预设值。
8.分布式ID的校验装置,其特征在于,用于校验使用权利要求1-3任一所述的分布式ID的生成方法生成的ID;
包括;
接收单元,用于接收用户在进行数据访问时输入的分布式ID;
提取单元,用于从所述分布式ID中提取出初始编码和待校验的第一校验码;
生成单元,用于利用所述初始编码,按照分布式ID在生成时使用的校验码生成规则,生成第二校验码;
验证单元,用于在所述第一校验码与所述第二校验码相同时,则确定所述分布式ID合法,否则,确定所述分布式ID不合法。
9.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011465364.9A CN112579566B (zh) | 2020-12-14 | 2020-12-14 | 分布式id的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011465364.9A CN112579566B (zh) | 2020-12-14 | 2020-12-14 | 分布式id的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112579566A CN112579566A (zh) | 2021-03-30 |
CN112579566B true CN112579566B (zh) | 2023-03-31 |
Family
ID=75132172
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011465364.9A Active CN112579566B (zh) | 2020-12-14 | 2020-12-14 | 分布式id的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579566B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838604A (zh) * | 2013-12-13 | 2014-06-04 | 广东天拓资讯科技有限公司 | 分布式全球唯一id生成方法 |
CN105160379A (zh) * | 2015-08-31 | 2015-12-16 | 浪潮软件股份有限公司 | 一种标识码的生成方法和装置、校验方法和装置 |
CN105830361A (zh) * | 2013-12-20 | 2016-08-03 | Lg电子株式会社 | 用于在无线lan系统中收发包括部分关联标识符的帧的方法和装置 |
CN110505306A (zh) * | 2019-08-30 | 2019-11-26 | 公安部交通管理科学研究所 | 一种可指定位数的数据id生成方法 |
CN110543518A (zh) * | 2019-08-27 | 2019-12-06 | 北京奇艺世纪科技有限公司 | 一种分布式id生成方法、装置、设备及存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017122951A (ja) * | 2016-01-04 | 2017-07-13 | 富士通株式会社 | 情報処理装置、十進数変換方法および十進数変換プログラム |
MA45323A (fr) * | 2016-03-18 | 2019-01-23 | Forticode Ltd | Procédé et système d'authentification d'utilisateur à sécurité améliorée |
CN107861833B (zh) * | 2017-10-30 | 2020-01-21 | 平安科技(深圳)有限公司 | 识别码的生成方法和装置、计算机设备、可读存储介质 |
CN108322222A (zh) * | 2018-01-16 | 2018-07-24 | 四川斐讯信息技术有限公司 | 一种生成及使用分布式唯一id的方法 |
US11044258B2 (en) * | 2018-08-24 | 2021-06-22 | Kyocera Document Solutions Inc. | Decentralized network for secure distribution of digital documents |
CN110704395B (zh) * | 2019-09-18 | 2022-12-09 | 四川商通实业有限公司 | 一种用于分布式系统的唯一标识方法 |
CN110909001A (zh) * | 2019-11-20 | 2020-03-24 | 成都比特信安科技有限公司 | 一种数据种子植入及溯源追踪的方法 |
CN111753016B (zh) * | 2020-06-28 | 2024-06-04 | 深圳前海微众银行股份有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
-
2020
- 2020-12-14 CN CN202011465364.9A patent/CN112579566B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103838604A (zh) * | 2013-12-13 | 2014-06-04 | 广东天拓资讯科技有限公司 | 分布式全球唯一id生成方法 |
CN105830361A (zh) * | 2013-12-20 | 2016-08-03 | Lg电子株式会社 | 用于在无线lan系统中收发包括部分关联标识符的帧的方法和装置 |
CN105160379A (zh) * | 2015-08-31 | 2015-12-16 | 浪潮软件股份有限公司 | 一种标识码的生成方法和装置、校验方法和装置 |
CN110543518A (zh) * | 2019-08-27 | 2019-12-06 | 北京奇艺世纪科技有限公司 | 一种分布式id生成方法、装置、设备及存储介质 |
CN110505306A (zh) * | 2019-08-30 | 2019-11-26 | 公安部交通管理科学研究所 | 一种可指定位数的数据id生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112579566A (zh) | 2021-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105373927B (zh) | 电子券的券码生成方法、装置及服务器 | |
CN108959386B (zh) | 分布式全局唯一id生成方法、装置、设备和存储介质 | |
CN109902071B (zh) | 业务日志存储方法、系统、装置及设备 | |
CN110489466B (zh) | 邀请码的生成方法、装置、终端设备及存储介质 | |
CN112035857B (zh) | 数据保护方法、装置、设备及介质 | |
CN112487253A (zh) | 用户邀请码生成方法、验证方法、装置、设备及存储介质 | |
CN110334103B (zh) | 推荐服务的更新方法、提供装置、访问装置和推荐系统 | |
CN110443927B (zh) | 访客密码生成方法、验证方法、服务器及智能门锁 | |
CN111866134B (zh) | 区块链交易哈希值和地址的生成方法、系统及存储介质 | |
CN109166199B (zh) | 一种密码的生成方法、装置及设备 | |
CN111126002A (zh) | 一种数据全局唯一性标识id的生成方法及系统 | |
CN112579566B (zh) | 分布式id的生成方法及装置 | |
CN117725062A (zh) | 数据库表处理方法、装置、存储介质及计算机设备 | |
CN114970464A (zh) | 用于标识生成的方法、装置、终端设备及存储介质 | |
CN112329393A (zh) | 一种短码id的生成方法、设备、存储介质 | |
CN113867818B (zh) | 一种ini文件的生成方法、装置、计算机设备及介质 | |
CN106156169B (zh) | 离散数据的处理方法和装置 | |
CN113377813A (zh) | 全局唯一标识码生成方法、设备、系统和计算机可读介质 | |
CN112291355B (zh) | 区块链钱包的密钥备份和恢复方法与装置 | |
CN117118757B (zh) | 工控环境下的终端登录方法、装置、设备及介质 | |
CN115002078B (zh) | 一种id生成方法及装置 | |
CN114884646B (zh) | 基于改进md5加密处理的系统密码存储方法 | |
CN109960922B (zh) | 一种识别新激活设备的方法及装置 | |
CN109359276B (zh) | 一种防伪码生成方法、装置、设备及存储介质 | |
CN111506654B (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 |