CN107861833A - 识别码的生成方法和装置、计算机设备、可读存储介质 - Google Patents
识别码的生成方法和装置、计算机设备、可读存储介质 Download PDFInfo
- Publication number
- CN107861833A CN107861833A CN201711035194.9A CN201711035194A CN107861833A CN 107861833 A CN107861833 A CN 107861833A CN 201711035194 A CN201711035194 A CN 201711035194A CN 107861833 A CN107861833 A CN 107861833A
- Authority
- CN
- China
- Prior art keywords
- uuid
- identification code
- value
- last
- insertion position
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例涉及一种识别码的生成方法、装置、计算机设备和计算机可读存储介质,所述方法包括:若接收到产生识别码UUID的指令,产生所述UUID;根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。本申请实施例通过接收到产生识别码UUID的指令,产生所述UUID;根据所述UUID预先指定位置上的值,在所述UUID的首位和末位之间获取插入位置;在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,通过插入的所述预设内容实现对识别码的简单校验。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及识别码的生成方法和装置、计算机设备、计算机可读存储介质。
背景技术
UUID,是指通用唯一识别码(Universally Unique Identifier),UUID的目的是让分布式系统中的所有元素,都能有唯一的标识,而不需要透过中央控制端来做辨别标识的指定。如此一来,分布式系统中的每个元素都可以建立不与其它元素冲突的UUID。在这样的情况下,就不需考虑数据库建立时的名称重复问题。
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成UUID的API(Application Programming Interface,应用程序编程接口)。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
上述UUID生成算法采用随机生成一个32位的十六进制数,但规则统一,任何人都可以生成,对识别码的校验存在困难。
发明内容
基于上述对识别码的校验存在困难的问题,本申请实施例提供一种识别码的生成方法和装置、计算机设备、计算机可读存储介质,可以实现对UUID的简单校验。
一种识别码的生成方法,所述方法包括:
若接收到产生识别码UUID的指令,产生所述UUID;
根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;
在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
一种识别码的生成装置,所述装置包括:
产生模块,用于若接收到产生识别码UUID的指令,产生所述UUID;
获取模块,用于根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;
生成模块,用于在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
一种计算机设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法的步骤。
上述识别码的生成方法和装置、计算机设备、计算机可读存储介质,通过若接收到产生识别码UUID的指令,产生所述UUID;根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,通过插入的所述预设内容实现对识别码的简单校验。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一个实施例中识别码的生成方法的应用环境图;
图2为本申请提供的识别码的生成方法的一个实施例的流程图;
图3为本申请提供的识别码的生成装置的一个实施例的程序模块架构图;
图4为与本申请实施例提供的计算机设备相关的服务器的部分结构的框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
可以理解,本发明所使用的术语“第一”、“第二”等可在本文中用于描述各种元素,但这些元素不受这些术语限制。这些术语仅用于将第一个元素与另一个元素区分。举例来说,在不脱离本申请的范围的情况下,可以将第一预设规则称为第二预设规则,且类似地,可将第二预设规则称为第一预设规则。第一预设规则和第二预设规则两者都是预设规则,但其不是同一预设规则。
请参阅图1,图1为一个实施例中识别码的生成方法的应用环境图,所述应用环境包括:终端120、连接网络140和服务器160。
其中,终端120包括移动终端、平板电脑、智能穿戴设备、台式机或者笔记本等电子设备,本实施例中以移动终端来示意。
联网网络140为有线或无线网络,所述无线连接方式包括移动通信网络或者WIFI(WIreless-Fidelity,无线保真)等连接方式。本实施例中通过无线网络来示意。
服务器160,为本地服务器或者云端服务器等。
该应用环境中各部件的工作过程为:所述终端120通过联网网络140向服务器160发送请求,比如所述终端120通过联网网络140向服务器160发送通过扫描二维码进行账号登录请求,所述服务器160接收到所述终端120发送的账号登录请求后,所述服务器160调用所述服务器160上产生通用唯一识别码UUID的模块,所述模块接收到产生所述识别码UUID的指令后,产生所述UUID,同时所述服务器160根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置,在所述插入位置插入按照第一预设规则产生的验证所述UUID的预设内容,生成新的识别码,所述服务器160将通用唯一的新的识别码以二维码的形式发送给终端120,所述终端120通过所述新的识别码进行账号验证,登录所述服务器160,当所述终端120通过包含所述新的识别码的二维码登录所述服务器160时,所述服务器160通过所述新的识别码包含的验证内容验证二维码,进而实现对登录账号的验证。
请参阅图2,图2为本申请提供的识别码的生成方法的一个实施例的流程图,所述方法包括:
步骤200、若接收到产生识别码UUID的指令,产生所述UUID。
具体地,目前最广泛应用的UUID,即是微软的Microsoft's Globally UniqueIdentifiers(GUIDs),而其他应用,则有Linux ext2/ext3档案系统、LUKS加密分割区、GNOME、KDE、Mac OS X等等,通常计算机设备平台会提供生成UUID的API模块(ApplicationProgramming Interface,应用程序编程接口)。
计算机设备接收到产生识别码UUID的指令,所述计算机设备通过调用所述计算机设备上的生成UUID的API接口,生成一个识别码UUID,所述UUID为32位的16进制随机数,转化为二进制,也就是16字节128位的二进制数。
UUID的生成方式可以为:
Java生成代码:UUID.randomUUID().toString().replace("-",""),生成一个32位的16进制随机数,如:406fb0188d884cc3aff84b0f7ea2953c。
通常,UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号(IEEE,全称是Institute of Electrical andElectronics Engineers,电气和电子工程师协会),如果有网卡,从网卡MAC地址获得(MAC,Media Access Control或者Medium Access Control,媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置),没有网卡以其他方式获得。
步骤220、根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置。
具体地,计算机设备根据接收到的生成UUID的指令生成所述UUID,根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取一个插入位置,确保所述识别码的首位的值和末位的值不变。之所以在所述UUID的首位和末位之间获取一个插入位置,是因为不知道插入位置的获取方式,就不能确定插入位置,进而不能获取插入内容,从而保证所述识别码不被破解或篡改,从而保证所述UUID的安全性。
步骤240、在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
具体地,所述第一预设规则至少包括以下内容的一项:生成验证所述UUID时效性的当前时间片段的生成方式,生成验证所述UUID真实性的校验位(或者称为校验码)的生成方式。
计算机设备在所述UUID获取插入位置,在所述插入位置插入预设内容,生成新的识别码,由于未插入预设内容时的原识别码具有唯一性,则新生成的识别码在原来唯一的基础上也具有唯一性,从而在保证新生成的识别码唯一的基础上,根据新识别码的插入内容,实现对所述新识别码的校验,且新识别码的生成方法简单,计算复杂度低,具有高效性。
进一步的,校验新生成的识别码时,采取的步骤如下:
(1)根据生成新识别码的首位上的首位值和末位上的末位值,及插入位置的预设获取方式,确定插入位置。
具体地,由于插入的预设内容在所述识别码的首位和末位的中间,则插入预设内容后新生成的识别码的首位和末位相对于原来的识别码的首位和末位不变,根据新生成的识别码的首位的首位值和末位的末位值,及插入位置的预设获取方式,找到插入位置。
(2)根据新生成的新UUID长度-32(32为原UUID长度)获取插入的预设内容的插入长度,从获取的所述插入位置根据所述插入长度,截取出插入的预设内容。
(3)根据插入的所述预设内容,校验新生成的识别码。
具体地,比如,若插入内容为生成所述识别码的当前时间片段和校验位,则可以通过生成所述识别码的当前时间片段和计算机设备的当前时间比较,以及计算机设备上设置的所述识别码的有效存续时间,验证所述识别码的时效性,也就是验证所述识别码是否还处于有效时间内。比如,若计算机设备上设置的所述识别码的有效存续时间为5分钟,则比较所述识别码的生成时间到计算机设备上的当前时间是否超过了5分钟,若未超过5分钟,所述识别码处于有效时间内,所述识别码为有效;若超过5分钟,所述识别码已经超过有效时间,则所述识别码失效。
还可以通过校验位验证所述识别码的真实性,也就是根据校验位上采取的不同的校验方式的校验规则,验证校验位是否存在一致性,若校验位存在一致性性,表明所述识别码是真实的,若校验位存在不一致性,表明所述识别码被篡改或破解了。比如,若校验位采用奇偶校验,根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。
相对于根据统一规则生成的原UUID,根据插入内容能够实现对新生成的识别码的简单校验。
在一个实施例中,所述UUID预先指定位置上的值包括以下至少一项:
所述UUID的首位上的首位值,所述UUID的末位上的末位值。
具体地,计算机设备根据接收到产生识别码UUID的指令,所述计算机设备通过调用生成UUID的API接口,生成识别码UUID,所述计算机设备生成的所述识别码UUID为32位的16进制随机数,如:406fb0188d884cc3aff84b0f7ea2953c。所述计算机设备判断所述识别码UUID的每一位的位置范围为0~31位,每一位上的值为0~15之间的值,根据计算机的规则,所述识别码UUID的每个位置上的值和十进制的对应关系如下表格1所示:
表格1
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f |
根据上述表格1可知,上述识别码:406fb0188d884cc3aff84b0f7ea2953c,首位是4,末位是c,则所述识别码“406fb0188d884cc3aff84b0f7ea2953c”首位上的首位值为4,末位上的末位值为12。
在一个实施例中,所述根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置的步骤包括:
根据所述首位值、所述末位值或者所述首位值与所述末位值,获取正整数;
按照所述UUID从左到右的顺序,或者按照所述UUID从右到左的顺序,根据所述正整数,在所述UUID的首位和末位之间获取插入位置。
具体地,计算机设备获取插入位置,所述插入位置根据所述UUID预先指定位置上的值及所述插入位置的预设获取方式获取,可以是根据所述首位值获取的正整数,也可以是根据所述末位值获取的正整数,还可以是根据所述首位值与末位值结合起来获取正整数。比如上述识别码:406fb0188d884cc3aff84b0f7ea2953c,可见,所述识别码的首位的首位值为4,末位的末位值为c,16进制c对应的十进制为12,所述计算机设备根据所述识别码首位值4,及末位值12,根据所述UUID预先指定位置上的值,及按照预设所述插入位置的获取方式,获取一个插入位置,获取的插入位置可以为以下情形中的一种:
(1)根据所述UUID预先指定位置上的值,所述插入位置的获取方式为按照所述识别码从左到右的顺序获取插入位置。
若所述插入位置为所述识别码的首位值,由于所述识别码的首位值为4,则插入位置为所述识别码从左到右的第4个位置,即所述识别码中从左到右的第一个f后;同样,若所述插入位置为所述识别码的末位值,则插入位置为所述识别码从左到右的第12个位置,即所述识别码中从左到右的第4个8后。
(2)根据所述UUID预先指定位置上的值,所述插入位置的获取方式为按照所述识别码从右到左的顺序获取插入位置。
若所述插入位置为所述识别码的首位值,由于所述识别码的首位值为4,则插入位置为所述识别码从右到左的第4个位置,即所述识别码中从右到左第一个9前面的位置;同样,若所述插入位置为所述识别码的末位值,则插入位置为所述识别码的第12个位置,即所述识别码中从右到左第1个4的前面。
可见,通过上述方式,可以实现所述插入位置的灵活设置,进一步确保所述识别码的安全性。
在一个实施例中,所述根据所述首位值与所述末位值,获取正整数的步骤包括:
根据所述UUID的首位上的首位值和末位上的末位值的和,获取正整数。
具体地,计算机设备根据所述UUID的首位上的首位值和末位上的末位值的和,获取正整数,根据获取的正整数,按照插入位置的预设获取方式,在所述UUID的首位和末位之间获取插入位置。
以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,计算机设备可以以所述识别码的首位值4和末位值12之和16,按照所述识别码从左到右的顺序,以所述识别码第16个位置作为预设内容的插入位置,也就是在识别码:406fb0188d884cc3aff84b0f7ea2953c的第16个位置,也就是空格处插入预设内容。
在一个实施例中,所述根据所述首位值与所述末位值,获取正整数的步骤包括:
根据所述UUID的首位值和末位值的差的绝对值,获取正整数。
具体地,计算机设备根据所述UUID的首位上的首位值和末位上的末位值的差的绝对值,获取正整数,根据获取的正整数,按照插入位置的预设获取方式,在所述UUID的首位和末位之间获取插入位置。
以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,计算机设备可以以所述识别码的首位值4和末位值12之差的绝对值8,按照所述识别码从左到右的顺序,以所述识别码第8个位置作为预设内容的插入位置,也就是在识别码:406fb0188d884cc3aff84b0f7ea2953c的第8个位置,也就是空格处插入预设内容。
在一个实施例中,所述根据所述首位值、所述末位值或者所述首位值与所述末位值获取正整数的步骤包括:
根据所述首位值加n1,所述末位值加n2,所述首位值与所述末位值之和加1,或者所述首位值与所述末位值之差的绝对值加n3,获取正整数,其中,1≤n1≤16,1≤n2≤16,1≤n3≤16。
具体地,计算机设备根据以下情形之一,来获取正整数,进一步根据所述正整数和插入位置的预设获取方式获取插入位置:
(1)根据所述首位值加n1,1≤n1≤16。由于所述UUID是32位的自然数,首位上的首位值最大为15,最小为0,为了保证插入位置在首位和末位之间,则首位值加n1,n1的取值范围只能是1≤n1≤16。
同理,所述末位值加n2,n2的取值范围只能是1≤n2≤16。
(2)为避免所述识别码的首位上的首位值与所述识别码的末位上的末位值的和为0,也就是,所述识别码的首位值与所述识别码的末位值均为0的情形,其和为0,和为0,意味着插入位置为所述识别码的首位,预设的插入内容在所述识别码的前面,这样的情形,所述识别码容易被识别,在所述识别码的首位值与所述识别码的末位值之和再加1,也就是(首位+末位)+1,范围1~31正好在所述识别码的首位和末位的中间,该插入方式能够保证首位和末位的数值不变,方便进行校验时确定插入位置,根据所述插入位置获取预设的插入内容。比如,以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,则插入点位置为:406fb0188d884cc3a插入点ff84b0f7ea2953c。
(3)若根据所述首位值与所述末位值之差的绝对值加n3,获取正整数。
具体地,有以下两种情形:
1)所述识别码的首位上的首位值与所述识别码的末位上的末位值的差的绝对值最小为0,也就是,所述识别码的首位上的首位值与所述识别码的末位上的末位值相同。
2)所述识别码的首位上的首位值与所述识别码的末位上的末位值的差的绝对值最大为15,也就是,所述识别码的首位上的首位值与所述识别码的末位上的末位值一个为0和一个为15。
差的绝对值为0,意味着插入位置为所述识别码的首位,预设的插入内容在所述识别码的前面,差的绝对值为15,再有17个位置,则意味着插入位置为所述识别码的末位,预设的插入内容在所述识别码的后面面,无论所述插入位置在所述识别码的前面还是后面,这样的情形,所述识别码容易被识别,因此为了保证插入位置在所述UUID的首位和末位的中间,在所述识别码的首位上的首位值与所述识别码的末位上的末位值之差的绝对值上,再加n3,也就是|首位﹣末尾|+n3,为了保证获取的插入位置在所述UUID的首位和末位的中间,则n3的取值最大可以取16,最小为1,该插入方式能够保证首位和末位的数值不变,方便进行校验时确定插入位置,根据所述插入位置获取预设的插入内容。
比如,以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,以n3取1为例,则插入点位置为:406fb0188插入点d884cc3a ff84b0f7ea2953c。
在一个实施例中,所述在所述插入位置插入验证所述UUID的预设内容的步骤包括:
在所述插入位置插入至少以下一项内容:当前时间片段,校验位。
具体地,其中,所述当前时间片段指在插入位置插入预设内容时,获取的时间戳的生成时间,由于是以一段数字表示,称之为当前时间片段。所述当前时间片段的获取方式可以为:以JavaScript为例,JavaScript用new Date().getTime()来获时间戳,获取的是十进制的以毫秒为单位的时间戳,十进制的时间戳去除高位前k位(离产生时间戳的生产时间较远的位,数值长期不变,去除后不影响生存时间的判定),再去除后3位(除以1000,从秒截取),转化成十六进制,得到当前时间片段。对于k的取值,以不影响定义的时间片段的有效性生存时间为准,比如生成一个十进制的时间戳为12345,假设定义的当前时间片段的生存时间为345,则12345+345=12690,也就是当前时间片段的有效性截止时间为12690,12345与12690相比,去除12345的高位,也就是离生产时间较远的与12690共有的位数12,不影响对生存时间有效性的判断,则去掉12345的高位12,剩余位数345,则十进制的时间戳去除高位前k位,是指去除十进制的时间戳12345的高位前2位12。
如果以PHP(是英文超文本预处理语言Hypertext Preprocessor的缩写)为例,获取的时间戳是以秒为单位的时间戳,则直接转化成16进制,得到当前时间片段,通过不同方式获取的时间戳,根据时间单位毫秒、秒等单位之间的关系换算成需要的时间单位,转换成16进制,即可得到当前的时间片段。其中,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
进一步地,根据实际需要对时间的敏感度,除了上述用秒为时间单位获取当前时间片段,还可以以分钟为时间单位来获取时间片段。比如,仍以JavaScript为例,由于终端生成的时间戳默认是以毫秒计算的,由于秒和毫秒之间是1000的倍数关系,所以以秒来获取时间片段的话,是去除后3位,除以1000;如果是以分钟,则是除以60×1000。
进一步地,时间片段的设置,还可以通过将时间片段的顺序颠倒,比如从正到反,来定制时间片段,比如按上述算法获得的时间片段是12345,则可将12345顺序反过来,通过54321来表示时间片段,从而获得时间片段的定制。
可见,通过上述方式获取当前时间片段的方式是多种多样的,从而实现所述当前时间片段定制的灵活性,进一步确保所述识别码的安全。
进一步地,根据实际情形对所述识别码时效性需求,以当前时间片段为基准,可通过服务器端定义所述识别码的生存时间,所述识别码的生存时间,也就是指所述识别码的有效时间,在所述生存时间内,所述识别码处于有效状态,超过所述生存时间,所述识别码处于失效状态,比如定义所述识别码的生存时间为5分钟,则从识别码生成的时间算起,在5分钟内,所述识别码有效,超过5分钟,所述识别码失效。服务器校验所述识别码时,服务器根据生成所述识别码的所述当前时间片段表示的所述识别码的生成时间与当前时间比较,判断所述识别码在定义的生存时间内,所述识别码有效,若服务器判断所述识别码超过了所述识别码定义的生存时间,则所述识别码失效。也就是所述识别码的生存时间是可以通过服务器根据需要定制的,例如5分钟、3分钟等,在生存时间内,则UUID有效,超过生存时间,则UUID失效,从而验证UUID的时效性,满足实际需要中对所述识别码有时效性要求的情形,比如扫码登录、扫码支付等,为了保证账户的安全,所述识别码需要满足一定的时效性要求,扫码登录,设置识别码为2分钟,在2分钟内,所述识别码有效,超过2分钟,所述识别码自动失效。
其中,所述校验位为奇偶校验、CRC校验、和校验或者MD5校验等。
其中,奇偶校验(Parity Check)是一种校验代码传输正确性的方法。根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。
和校验是指校验一组数据项的和是否正确。通常是以十六进制为数制表示的形式。如果校验和的数值超过十六进制的FF,也就是255。
MD5的实际应用是对一段Message(字节串)产生fingerprint(指纹),可以防止被篡改。
在一个实施例中,所述校验位由所述当前时间片段根据第二预设规则获取。
具体地,所述第二预设规则为校验位的获取方式。所述校验位的获取方式为:(当前时间片段后k位+插入位,k≥1)%16n,若校验位取1位时,n为1,也就是16n=161=16,比如校验位取1位时,校验位的值可采取:(当前时间片段后3位+插入位)%16。其中,所述当前时间片段后k位中的所述当前时间片段,可以是以十六进制表示的当前时间片段,也可以是以十进制表示的当前时间片段,从而进一步实现校验位获取方式的灵活多样性,根据当前时间片段的唯一性,从而获取的校验位也是唯一的,根据校验位和当前时间片段是否对应,从而校验所述识别码的真实性。
同样,若校验位为2位时,n取2,也就是16n=162,若校验位为3位时,16n=163,校验位为n位时,为16n,因此,采取这种方式获取的校验位,校验覆盖插入位与生存时间相关的当前时间片段,校验规则简单,校验位也是可以灵活设置的。
具体地,在所述插入位置插入所述当前时间片段,根据所述当前时间片段表示的时间与服务器判断所述识别码时的当时时间进行比较,根据时间的差值是否超过服务器定义的所述识别码的生存时间,判断所述识别码的时效性,通过在所述插入位置插入校验位,用来设置所述识别码的真实性,如果在所述位置同时插入当前时间片段和校验位,则可以同时验证所述识别码的时效性和真实性。
比如,以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,插入位置为(首位值+末位值)+1,则插入位置为:4+c(十进制的12)+1=17,也就是插入位置为所述识别码的第17位,插入内容:当前时间片段+校验位。其中,由于所述识别码采取十六进制,所述识别码每个位置上的值最大为15,因此(首位值+末位值)+1获取的插入位置在所述识别码的首位和末位的中间。
其中,当前时间片段:可以从秒截取,去除高位前k位(离生产时间较远的位),转十六进制进制,比如获取的十六进制的所述当前时间片段为:1d8b6f84。同时,可根据时效性需求,比如通过服务器设置所述识别码的生存时间为3分钟。
校验位:1位,值为:(当前时间片段后3位+插入位)%16,比如,以十六进制表示当前时间片段,以所述当前时间片段的10进制表示方式的后3位获取校验位,则根据十六进制的所述当前时间片段为:1d8b6f84的十进制表示方式的后3位获取的校验位为5。
新识别码生成结果如下:
406fb0188d884cc3a ff84b0f7ea2953c;
406fb0188d884cc3a 1d8b6f84 5 ff84b0f7ea2953c。
对上述新生成的识别码,服务器进行新生成的识别码校验时,可采取如下方式:
1)、根据首位值4和末位值c,找到插入位置第17位,根据新UUID长度-32(原UUID长度),获取插入长度9位,从插入位置截取出插入内容1d8b6f84 5。
2)、取插入内容最后一位5用作校验,检验UUID的真实性。
3)、取插入内容的其余片段与当前时间做比较,查看所述识别码是否超过服务器定义的生存时间(如3分钟),检验UUID的时效性。
因此,通过上述方式生成的识别码可校验所述识别码的真实性和时效性。
进一步地,根据上述方式新生成的所述识别码也是唯一的,可以根据反证法来进行验证:
前提:原UUID唯一
假设:存在2个完全相同的UUID,u1和u2;
证明:
u1与u2首尾相同,则插入点一致。
u1与u2长度相同,则插入长度一致。
删除u1与u2插入内容,可得u1与u2仍然相等。
因此,违反了原UUID唯一性原则。因此,假设不成立,新UUID唯一。
在保持了新生成的UUID唯一性的前提下,改进后新UUID有如下有益效果:
1)、新UUID的生成方式,可验证新UUID是可靠的、真实的;
2)、插入时间片段,并纳入校验,可为新UUID设定有效的存活时间;
3)、插入的时间片段、校验字段以及其生存周期皆可定制,因此,新UUID生成规则具有多样性;
4)、生成与校验算法复杂度较低,耗时短。
在一个实施例中,在所述插入位置插入当前时间片段和校验位,其中,当前时间片段在前,校验位在后,或者校验位在前,当前时间片段在后。
具体地,当在所述识别码的插入位置同时插入当前时间片段和校验位时,当前时间片段和校验位的顺序可以设置为当前时间片段在前,也可以设置为校验位在前。
所述识别码在实际应用中,比如做一个二维码扫码登录功能开发时,需要一个唯一的字段代表二维码,通过一个唯一的字段UUID代表二维码,通过所述UUID的唯一性验证真实性,通过UUID的时效性来保证二维码的有效与失效,当验证二维码真实且有效时,允许用户通过扫码登录账户,从而保证登录账户的安全。
上述识别码的生成方法,通过若接收到产生识别码UUID的指令,产生所述UUID;根据所述UUID预先指定位置上的值,在所述UUID的首位和末位之间获取插入位置;在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,通过插入的所述预设内容实现对识别码的简单校验。
请参阅图3,本申请实施例还提供一种识别码的生成装置,所述装置包括:
产生模块30,用于若接收到产生识别码UUID的指令,产生所述UUID。
具体地,计算机设备接收到产生识别码UUID的指令,所述计算机设备通过调用所述计算机设备上的生成UUID的API接口,生成一个识别码UUID,所述UUID为32位的16进制随机数,转化为二进制,也就是16字节128位的二进制数。
UUID的生成方式可以为:
Java生成代码:UUID.randomUUID().toString().replace("-",""),生成一个32位的16进制随机数,如:406fb0188d884cc3aff84b0f7ea2953c。
获取模块32,用于根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置。
具体地,计算机设备根据接收到的生成UUID的指令生成所述UUID,根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取一个插入位置,确保所述识别码的首位的值和末位的值不变。之所以在所述UUID的首位和末位之间获取一个插入位置,是因为不知道插入位置的获取方式,就不能确定插入位置,进而不能获取插入内容,从而保证所述识别码不被破解或篡改,从而保证所述UUID的安全性。
生成模块34,用于在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
具体地,所述第一预设规则至少包括以下内容的一项:生成验证所述UUID时效性的当前时间片段的生成方式,生成验证所述UUID真实性的校验位(或者称为校验码)的生成方式。
计算机设备在所述UUID获取插入位置,在所述插入位置插入预设内容,生成新的识别码,由于未插入预设内容时的原识别码具有唯一性,则新生成的识别码在原来唯一的基础上也具有唯一性,从而在保证新生成的识别码唯一的基础上,根据新识别码的插入内容,实现对所述新识别码的校验,且新识别码的生成方法简单,计算复杂度低,具有高效性。
比如,若插入内容为生成所述识别码的当前时间片段和校验位,则可以通过生成所述识别码的当前时间片段和计算机设备的当前时间比较,以及计算机设备上设置的所述识别码的有效存续时间,验证所述识别码的时效性,也就是验证所述识别码是否还处于有效时间内。比如,若计算机设备上设置的所述识别码的有效存续时间为5分钟,则比较所述识别码的生成时间到计算机设备上的当前时间是否超过了5分钟,若未超过5分钟,所述识别码处于有效时间内,所述识别码为有效;若超过5分钟,所述识别码已经超过有效时间,则所述识别码失效。
还可以通过校验位验证所述识别码的真实性,也就是根据校验位上采取的不同的校验方式的校验规则,验证校验位是否存在一致性,若校验位存在一致性性,表明所述识别码是真实的,若校验位存在不一致性,表明所述识别码被篡改或破解了。比如,若校验位采用奇偶校验,根据被传输的一组二进制代码的数位中“1”的个数是奇数或偶数来进行校验。采用奇数的称为奇校验,反之,称为偶校验。采用何种校验是事先规定好的。通常专门设置一个奇偶校验位,用它使这组代码中“1”的个数为奇数或偶数。若用奇校验,则当接收端收到这组代码时,校验“1”的个数是否为奇数,从而确定传输代码的正确性。
相对于根据统一规则生成的原UUID,根据插入内容能够实现对新生成的识别码的简单校验。
在一个实施例中,所述UUID预先指定位置上的值包括以下至少一项:
所述UUID的首位上的首位值,所述UUID的末位上的末位值。
具体地,计算机设备根据接收到产生识别码UUID的指令,所述计算机设备通过调用生成UUID的API接口,生成识别码UUID,所述计算机设备生成的所述识别码UUID为32位的16进制随机数,如:406fb0188d884cc3aff84b0f7ea2953c。所述计算机设备判断所述识别码UUID的每一位的位置范围为0~31位,每一位上的值为0~15之间的值,根据计算机的规则,所述识别码UUID的每个位置上的值和十进制的对应关系如下表格2所示:
表格2
十进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
十六进制 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | a | b | c | d | e | f |
根据上述表格2可知,上述识别码:406fb0188d884cc3aff84b0f7ea2953c,首位是4,末位是c,则所述识别码“406fb0188d884cc3aff84b0f7ea2953c”首位上的首位值为4,末位上的末位值为12。
在一个实施例中,所述获取模块32包括:
正整数获取单元,用于根据所述首位值、所述末位值或者所述首位值与所述末位值,获取正整数;
插入位置获取单元,用于按照所述UUID从左到右的顺序,或者按照所述UUID从右到左的顺序,根据所述正整数,在所述UUID的首位和末位之间获取插入位置。
具体地,计算机设备获取插入位置,所述插入位置根据所述UUID预先指定位置上的值及所述插入位置的预设获取方式获取,可以是根据所述首位值获取的正整数,也可以是根据所述末位值获取的正整数,还可以是根据所述首位值与末位值结合起来获取正整数。比如上述识别码:406fb0188d884cc3aff84b0f7ea2953c,可见,所述识别码的首位的首位值为4,末位的末位值为c,16进制c对应的十进制为12,所述计算机设备根据所述识别码首位值4,及末位值12,根据所述UUID预先指定位置上的值,及按照预设所述插入位置的获取方式,获取一个插入位置,获取的插入位置可以为以下情形中的一种:
(1)根据所述UUID预先指定位置上的值,所述插入位置的获取方式为按照所述识别码从左到右的顺序获取插入位置。
若所述插入位置为所述识别码的首位值,由于所述识别码的首位值为4,则插入位置为所述识别码从左到右的第4个位置,即所述识别码中从左到右的第一个f后;同样,若所述插入位置为所述识别码的末位值,则插入位置为所述识别码从左到右的第12个位置,即所述识别码中从左到右的第4个8后。
(2)根据所述UUID预先指定位置上的值,所述插入位置的获取方式为按照所述识别码从右到左的顺序获取插入位置。
若所述插入位置为所述识别码的首位值,由于所述识别码的首位值为4,则插入位置为所述识别码从右到左的第4个位置,即所述识别码中从右到左第一个9前面的位置;同样,若所述插入位置为所述识别码的末位值,则插入位置为所述识别码的第12个位置,即所述识别码中从右到左第1个4的前面。
可见,通过上述方式,可以实现所述插入位置的灵活设置,进一步确保所述识别码的安全性。
在一个实施例中,所述正整数获取单元包括:
用于根据所述UUID的首位上的首位值和末位上的末位值的和,获取正整数。
具体地,计算机设备根据所述UUID的首位上的首位值和末位上的末位值的和,获取正整数,根据获取的正整数,按照插入位置的预设获取方式,在所述UUID的首位和末位之间获取插入位置。
以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,计算机设备可以以所述识别码的首位值4和末位值12之和16,按照所述识别码从左到右的顺序,以所述识别码第16个位置作为预设内容的插入位置,也就是在识别码:406fb0188d884cc3aff84b0f7ea2953c的第16个位置,也就是空格处插入预设内容。
在一个实施例中,所述正整数获取单元包括:
用于根据所述UUID的首位值和末位值的差的绝对值,获取正整数。
具体地,计算机设备根据所述UUID的首位上的首位值和末位上的末位值的差的绝对值,获取正整数,根据获取的正整数,按照插入位置的预设获取方式,在所述UUID的首位和末位之间获取插入位置。
以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,计算机设备可以以所述识别码的首位值4和末位值12之差的绝对值8,按照所述识别码从左到右的顺序,以所述识别码第8个位置作为预设内容的插入位置,也就是在识别码:406fb0188d884cc3aff84b0f7ea2953c的第8个位置,也就是空格处插入预设内容。
在一个实施例中,所述正整数获取单元包括:
用于根据所述首位值加n1,所述末位值加n2,所述首位值与所述末位值之和加1,或者所述首位值与所述末位值之差的绝对值加n3,获取正整数,其中,1≤n1≤16,1≤n2≤16,1≤n3≤16。
具体地,计算机设备根据以下情形之一,来获取正整数,进一步根据所述正整数和插入位置的预设获取方式获取插入位置:
(1)根据所述首位值加n1,1≤n1≤16。由于所述UUID是32位的自然数,首位上的首位值最大为15,最小为0,为了保证插入位置在首位和末位之间,则首位值加n1,n1的取值范围只能是1≤n1≤16。
同理,所述末位值加n2,n2的取值范围只能是1≤n2≤16。
(2)为避免所述识别码的首位上的首位值与所述识别码的末位上的末位值的和为0,也就是,所述识别码的首位值与所述识别码的末位值均为0的情形,其和为0,和为0,意味着插入位置为所述识别码的首位,预设的插入内容在所述识别码的前面,这样的情形,所述识别码容易被识别,在所述识别码的首位值与所述识别码的末位值之和再加1,也就是(首位+末位)+1,范围1~31正好在所述识别码的首位和末位的中间,该插入方式能够保证首位和末位的数值不变,方便进行校验时确定插入位置,根据所述插入位置获取预设的插入内容。比如,以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,则插入点位置为:406fb0188d884cc3a插入点ff84b0f7ea2953c。
(3)若根据所述首位值与所述末位值之差的绝对值加n3,获取正整数。
具体地,有以下两种情形:
1)所述识别码的首位上的首位值与所述识别码的末位上的末位值的差的绝对值最小为0,也就是,所述识别码的首位上的首位值与所述识别码的末位上的末位值相同。
2)所述识别码的首位上的首位值与所述识别码的末位上的末位值的差的绝对值最大为15,也就是,所述识别码的首位上的首位值与所述识别码的末位上的末位值一个为0和一个为15。
差的绝对值为0,意味着插入位置为所述识别码的首位,预设的插入内容在所述识别码的前面,差的绝对值为15,再有17个位置,则意味着插入位置为所述识别码的末位,预设的插入内容在所述识别码的后面面,无论所述插入位置在所述识别码的前面还是后面,这样的情形,所述识别码容易被识别,因此为了保证插入位置在所述UUID的首位和末位的中间,在所述识别码的首位上的首位值与所述识别码的末位上的末位值之差的绝对值上,再加n3,也就是|首位﹣末尾|+n3,为了保证获取的插入位置在所述UUID的首位和末位的中间,则n3的取值最大可以取16,最小为1,该插入方式能够保证首位和末位的数值不变,方便进行校验时确定插入位置,根据所述插入位置获取预设的插入内容。
比如,以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,以n3取1为例,则插入点位置为:406fb0188插入点d884cc3a ff84b0f7ea2953c。
在一个实施例中,所述生成模块34包括:
用于在所述插入位置插入至少以下一项内容:当前时间片段,校验位。
具体地,其中,所述当前时间片段指在插入位置插入预设内容时,获取的时间戳的生成时间,由于是以一段数字表示,称之为当前时间片段。所述当前时间片段的获取方式可以为:以JavaScript为例,JavaScript用new Date().getTime()来获时间戳,获取的是十进制的以毫秒为单位的时间戳,十进制的时间戳去除高位前k位(离产生时间戳的生产时间较远的位,数值长期不变,去除后不影响生存时间的判定),再去除后3位(除以1000,从秒截取),转化成十六进制,得到当前时间片段。对于k的取值,以不影响定义的时间片段的有效性生存时间为准,比如生成一个十进制的时间戳为12345,假设定义的当前时间片段的生存时间为345,则12345+345=12690,也就是当前时间片段的有效性截止时间为12690,12345与12690相比,去除12345的高位,也就是离生产时间较远的与12690共有的位数12,不影响对生存时间有效性的判断,则去掉12345的高位12,剩余位数345,则十进制的时间戳去除高位前k位,是指去除十进制的时间戳12345的高位前2位12。
如果以PHP(是英文超文本预处理语言Hypertext Preprocessor的缩写)为例,获取的时间戳是以秒为单位的时间戳,则直接转化成16进制,得到当前时间片段,通过不同方式获取的时间戳,根据时间单位毫秒、秒等单位之间的关系换算成需要的时间单位,转换成16进制,即可得到当前的时间片段。其中,时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
进一步地,根据实际需要对时间的敏感度,除了上述用秒为时间单位获取当前时间片段,还可以以分钟为时间单位来获取时间片段。比如,仍以JavaScript为例,由于终端生成的时间戳默认是以毫秒计算的,由于秒和毫秒之间是1000的倍数关系,所以以秒来获取时间片段的话,是去除后3位,除以1000;如果是以分钟,则是除以60×1000。
进一步地,时间片段的设置,还可以通过将时间片段的顺序颠倒,比如从正到反,来定制时间片段,比如按上述算法获得的时间片段是12345,则可将12345顺序反过来,通过54321来表示时间片段,从而获得时间片段的定制。
可见,通过上述方式获取当前时间片段的方式是多种多样的,从而实现所述当前时间片段定制的灵活性,进一步确保所述识别码的安全。
进一步地,根据实际情形对所述识别码时效性需求,以当前时间片段为基准,可通过服务器端定义所述识别码的生存时间,所述识别码的生存时间,也就是指所述识别码的有效时间,在所述生存时间内,所述识别码处于有效状态,超过所述生存时间,所述识别码处于失效状态,比如定义所述识别码的生存时间为5分钟,则从识别码生成的时间算起,在5分钟内,所述识别码有效,超过5分钟,所述识别码失效。服务器校验所述识别码时,服务器根据生成所述识别码的所述当前时间片段表示的所述识别码的生成时间与当前时间比较,判断所述识别码在定义的生存时间内,所述识别码有效,若服务器判断所述识别码超过了所述识别码定义的生存时间,则所述识别码失效。也就是所述识别码的生存时间是可以通过服务器根据需要定制的,例如5分钟、3分钟等,在生存时间内,则UUID有效,超过生存时间,则UUID失效,从而验证UUID的时效性,满足实际需要中对所述识别码有时效性要求的情形,比如扫码登录、扫码支付等,为了保证账户的安全,所述识别码需要满足一定的时效性要求,扫码登录,设置识别码为2分钟,在2分钟内,所述识别码有效,超过2分钟,所述识别码自动失效。
其中,所述校验位为奇偶校验、CRC校验、和校验或者MD5校验等。
在一个实施例中,所述校验位由所述当前时间片段根据第二预设规则获取。
具体地,所述第二预设规则为校验位的获取方式。所述校验位的获取方式为:(当前时间片段后k位+插入位,k≥1)%16n,若校验位取1位时,n为1,也就是16n=161=16,比如校验位取1位时,校验位的值可采取:(当前时间片段后3位+插入位)%16。其中,所述当前时间片段后k位中的所述当前时间片段,可以是以十六进制表示的当前时间片段,也可以是以十进制表示的当前时间片段,从而进一步实现校验位获取方式的灵活多样性,根据当前时间片段的唯一性,从而获取的校验位也是唯一的,根据校验位和当前时间片段是否对应,从而校验所述识别码的真实性。
同样,若校验位为2位时,n取2,也就是16n=162,若校验位为3位时,16n=163,校验位为n位时,为16n,因此,采取这种方式获取的校验位,校验覆盖插入位与生存时间相关的当前时间片段,校验规则简单,校验位也是可以灵活设置的。
具体地,在所述插入位置插入所述当前时间片段,根据所述当前时间片段表示的时间与服务器判断所述识别码时的当时时间进行比较,根据时间的差值是否超过服务器定义的所述识别码的生存时间,判断所述识别码的时效性,通过在所述插入位置插入校验位,用来设置所述识别码的真实性,如果在所述位置同时插入当前时间片段和校验位,则可以同时验证所述识别码的时效性和真实性。
比如,以上述识别码:406fb0188d884cc3aff84b0f7ea2953c为例,插入位置为(首位值+末位值)+1,则插入位置为:4+c(十进制的12)+1=17,也就是插入位置为所述识别码的第17位,插入内容:当前时间片段+校验位。其中,由于所述识别码采取十六进制,所述识别码每个位置上的值最大为15,因此(首位值+末位值)+1获取的插入位置在所述识别码的首位和末位的中间。
其中,当前时间片段:可以从秒截取,去除高位前k位(离生产时间较远的位),转十六进制进制,比如获取的十六进制的所述当前时间片段为:1d8b6f84。同时,可根据时效性需求,比如通过服务器设置所述识别码的生存时间为3分钟。
校验位:1位,值为:(当前时间片段后3位+插入位)%16,比如,以十六进制表示当前时间片段,以所述当前时间片段的10进制表示方式的后3位获取校验位,则根据十六进制的所述当前时间片段为:1d8b6f84的十进制表示方式的后3位获取的校验位为5。
新识别码生成结果如下:
406fb0188d884cc3a ff84b0f7ea2953c;
406fb0188d884cc3a 1d8b6f84 5 ff84b0f7ea2953c。
对上述新生成的识别码,服务器进行新生成的识别码校验时,可采取如下方式:
1)、根据首位值4和末位值c,找到插入位置第17位,根据新UUID长度-32(原UUID长度),获取插入长度9位,从插入位置截取出插入内容1d8b6f84 5。
2)、取插入内容最后一位5用作校验,检验UUID的真实性。
3)、取插入内容的其余片段与当前时间做比较,查看所述识别码是否超过服务器定义的生存时间(如3分钟),检验UUID的时效性。
因此,通过上述方式生成的识别码可校验所述识别码的真实性和时效性。
在保持了新生成的UUID唯一性的前提下,改进后新UUID有如下有益效果:
1)、新UUID的生成方式,可验证新UUID是可靠的、真实的;
2)、插入时间片段,并纳入校验,可为新UUID设定有效的存活时间;
3)、插入的时间片段、校验字段以及其生存周期皆可定制,因此,新UUID生成规则具有多样性;
4)、生成与校验算法复杂度较低,耗时短。
在一个实施例中,在所述插入位置插入当前时间片段和校验位,其中,当前时间片段在前,校验位在后,或者校验位在前,当前时间片段在后。
具体地,当在所述识别码的插入位置同时插入当前时间片段和校验位时,当前时间片段和校验位的顺序可以设置为当前时间片段在前,也可以设置为校验位在前。
所述识别码在实际应用中,比如做一个二维码扫码登录功能开发时,需要一个唯一的字段代表二维码,通过一个唯一的字段UUID代表二维码,通过所述UUID的唯一性验证真实性,通过UUID的时效性来保证二维码的有效与失效,当验证二维码真实且有效时,允许用户通过扫码登录账户,从而保证登录账户的安全。
上述识别码的生成装置中各个模块的划分仅用于举例说明,在其他实施例中,可将识别码的生成装置按照需要划分为不同的模块,以完成上述识别码的生成装置的全部或部分功能。
上述的识别码的生成装置可以实现为一种计算机程序的形式,计算机程序可在如图4所示的计算机设备上运行。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法的步骤:
若接收到产生识别码UUID的指令,产生所述UUID;
根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;
在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
在一个实施例中,所述UUID预先指定位置上的值包括以下至少一项:
所述UUID的首位上的首位值,所述UUID的末位上的末位值。
在一个实施例中,所述根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置的步骤包括:
根据所述首位值、所述末位值或者所述首位值与所述末位值,获取正整数;
按照所述UUID从左到右的顺序,或者按照所述UUID从右到左的顺序,根据所述正整数,在所述UUID的首位和末位之间获取插入位置。
在一个实施例中,所述根据所述首位值与所述末位值,获取正整数的步骤包括:
根据所述首位值与所述末位值的和,或者根据所述首位值与所述末位值的差的绝对值,获取正整数。
在一个实施例中,所述根据所述首位值、所述末位值或者所述首位值与所述末位值获取正整数的步骤包括:
根据所述首位值加n1,所述末位值加n2,所述首位值与所述末位值之和加1,或者所述首位值与所述末位值之差的绝对值加n3,获取正整数,其中,1≤n1≤16,1≤n2≤16,1≤n3≤16。
在一个实施例中,所述在所述插入位置插入验证所述UUID的预设内容的步骤包括:
在所述插入位置插入以下至少一项内容:当前时间片段,校验位。
在一个实施例中,所述校验位由所述当前时间片段根据第二预设规则获取。
本申请实施例还提供了一种计算机设备,所述计算机设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行所述的方法的步骤。如图4所示,为了便于说明,仅示出了与本申请实施例相关的部分。该计算机设备可以为包括个人电脑或者服务器等计算机设备,以计算机设备为服务器为例。
图4为与本申请实施例提供的计算机设备相关的服务器的部分结构的框图。参考图4,如图4所示,该服务器包括通过系统总线连接的处理器、非易失性存储介质、内存储器和网络接口。其中,该服务器的非易失性存储介质存储有操作系统和计算机可读指令。该计算机可读指令被处理器执行时以实现一种识别码的生成方法。该服务器的处理器用于提供计算和控制能力,支撑整个服务器的运行。该服务器的网络接口用于据以与外部的终端通过网络连接通信,比如接收终端发送的扫码请求以及向终端返回包含所述识别码的二维码等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器的限定,具体的服务器可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在本申请实施例中,该服务器所包括的处理器执行存储在存储器上的计算机程序时实现以下步骤:
若接收到产生识别码UUID的指令,产生所述UUID;
根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;
在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
在一个实施例中,所述UUID预先指定位置上的值包括以下至少一项:
所述UUID的首位上的首位值,所述UUID的末位上的末位值。
在一个实施例中,所述根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置的步骤包括:
根据所述首位值、所述末位值或者所述首位值与所述末位值,获取正整数;
按照所述UUID从左到右的顺序,或者按照所述UUID从右到左的顺序,根据所述正整数,在所述UUID的首位和末位之间获取插入位置。
在一个实施例中,所述根据所述首位值与所述末位值,获取正整数的步骤包括:
根据所述首位值与所述末位值的和,或者根据所述首位值与所述末位值的差的绝对值,获取正整数。
在一个实施例中,所述根据所述首位值、所述末位值或者所述首位值与所述末位值获取正整数的步骤包括:
根据所述首位值加n1,所述末位值加n2,所述首位值与所述末位值之和加1,或者所述首位值与所述末位值之差的绝对值加n3,获取正整数,其中,1≤n1≤16,1≤n2≤16,1≤n3≤16。
在一个实施例中,所述在所述插入位置插入验证所述UUID的预设内容的步骤包括:
在所述插入位置插入以下至少一项内容:当前时间片段,校验位。
在一个实施例中,所述校验位由所述当前时间片段根据第二预设规则获取。
本申请所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性。合适的非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种识别码的生成方法,所述方法包括:
若接收到产生识别码UUID的指令,产生所述UUID;
根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;
在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
2.根据权利要求1所述的方法,其特征在于,所述UUID预先指定位置上的值包括以下至少一项:
所述UUID的首位上的首位值,所述UUID的末位上的末位值。
3.根据权利要求2所述的方法,其特征在于,所述根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置的步骤包括:
根据所述首位值、所述末位值或者所述首位值与所述末位值,获取正整数;
按照所述UUID从左到右的顺序,或者按照所述UUID从右到左的顺序,根据所述正整数,在所述UUID的首位和末位之间获取插入位置。
4.根据权利要求3所述的方法,其特征在于,所述根据所述首位值与所述末位值,获取正整数的步骤包括:
根据所述首位值与所述末位值的和,或者根据所述首位值与所述末位值的差的绝对值,获取正整数。
5.根据权利要求3所述的方法,其特征在于,所述根据所述首位值、所述末位值或者所述首位值与所述末位值获取正整数的步骤包括:
根据所述首位值加n1,所述末位值加n2,所述首位值与所述末位值之和加1,或者所述首位值与所述末位值之差的绝对值加n3,获取正整数,其中,1≤n1≤16,1≤n2≤16,1≤n3≤16。
6.根据权利要求1所述的方法,其特征在于,所述在所述插入位置插入验证所述UUID的预设内容的步骤包括:
在所述插入位置插入以下至少一项内容:当前时间片段,校验位。
7.根据权利要求6所述的方法,其特征在于,所述校验位由所述当前时间片段根据第二预设规则获取。
8.一种识别码的生成装置,其特征在于,所述装置包括:
产生模块,用于若接收到产生识别码UUID的指令,产生所述UUID;
获取模块,用于根据所述UUID预先指定位置上的值,按照预设获取方式,在所述UUID的首位和末位之间获取插入位置;
生成模块,用于在所述插入位置插入验证所述UUID的预设内容,生成新的识别码,所述预设内容按照第一预设规则生成。
9.一种计算机设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要1-7任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711035194.9A CN107861833B (zh) | 2017-10-30 | 2017-10-30 | 识别码的生成方法和装置、计算机设备、可读存储介质 |
PCT/CN2018/077283 WO2019085350A1 (zh) | 2017-10-30 | 2018-02-26 | 识别码的生成方法和装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711035194.9A CN107861833B (zh) | 2017-10-30 | 2017-10-30 | 识别码的生成方法和装置、计算机设备、可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107861833A true CN107861833A (zh) | 2018-03-30 |
CN107861833B CN107861833B (zh) | 2020-01-21 |
Family
ID=61697520
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711035194.9A Active CN107861833B (zh) | 2017-10-30 | 2017-10-30 | 识别码的生成方法和装置、计算机设备、可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN107861833B (zh) |
WO (1) | WO2019085350A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110149312A (zh) * | 2019-04-09 | 2019-08-20 | 北京奇艺世纪科技有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
CN111679932A (zh) * | 2020-06-01 | 2020-09-18 | 北京和德宇航技术有限公司 | 一种误码数据生成方法、装置、计算机设备及存储介质 |
CN112579566A (zh) * | 2020-12-14 | 2021-03-30 | 浪潮云信息技术股份公司 | 分布式id的生成方法及装置 |
CN113055760A (zh) * | 2019-12-26 | 2021-06-29 | 中兴通讯股份有限公司 | 日志处理方法、装置、设备和存储介质 |
CN114943205A (zh) * | 2022-06-08 | 2022-08-26 | 北京金橙子科技股份有限公司 | 一种身份识别编码uuid生成方法、系统、存储介质及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298716A (zh) * | 2011-09-02 | 2011-12-28 | 北京地拓科技发展有限公司 | 一种识别码的生成方法和装置以及识别码应用方法 |
CN102769667A (zh) * | 2012-06-29 | 2012-11-07 | 北京奇虎科技有限公司 | 一种id生成方法、装置和系统 |
CN104836664A (zh) * | 2015-03-27 | 2015-08-12 | 腾讯科技(深圳)有限公司 | 一种执行业务处理的方法、装置和系统 |
KR101650287B1 (ko) * | 2016-03-08 | 2016-08-23 | 주식회사 시큐브 | 볼륨 guid 기반 파일 접근 제어 시스템 및 그 방법 |
CN107181771A (zh) * | 2016-03-09 | 2017-09-19 | 北京优朋普乐科技有限公司 | 二维码的生成方法和二维码扫描事件的响应方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106603586B (zh) * | 2015-10-14 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 一种生成设备标识的方法、装置和系统 |
CN106210161A (zh) * | 2016-06-24 | 2016-12-07 | 中国银联股份有限公司 | 一种短链接生成方法及系统 |
CN106571953A (zh) * | 2016-10-21 | 2017-04-19 | 东莞市大易产业链服务有限公司 | 一种分布式唯一id生成方法 |
CN106657429A (zh) * | 2016-10-24 | 2017-05-10 | 珠海市魅族科技有限公司 | 一种设备标识符生成方法以及装置 |
-
2017
- 2017-10-30 CN CN201711035194.9A patent/CN107861833B/zh active Active
-
2018
- 2018-02-26 WO PCT/CN2018/077283 patent/WO2019085350A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102298716A (zh) * | 2011-09-02 | 2011-12-28 | 北京地拓科技发展有限公司 | 一种识别码的生成方法和装置以及识别码应用方法 |
CN102769667A (zh) * | 2012-06-29 | 2012-11-07 | 北京奇虎科技有限公司 | 一种id生成方法、装置和系统 |
CN104836664A (zh) * | 2015-03-27 | 2015-08-12 | 腾讯科技(深圳)有限公司 | 一种执行业务处理的方法、装置和系统 |
KR101650287B1 (ko) * | 2016-03-08 | 2016-08-23 | 주식회사 시큐브 | 볼륨 guid 기반 파일 접근 제어 시스템 및 그 방법 |
CN107181771A (zh) * | 2016-03-09 | 2017-09-19 | 北京优朋普乐科技有限公司 | 二维码的生成方法和二维码扫描事件的响应方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110149312A (zh) * | 2019-04-09 | 2019-08-20 | 北京奇艺世纪科技有限公司 | 数据处理方法、装置、系统及计算机可读存储介质 |
CN113055760A (zh) * | 2019-12-26 | 2021-06-29 | 中兴通讯股份有限公司 | 日志处理方法、装置、设备和存储介质 |
WO2021129849A1 (zh) * | 2019-12-26 | 2021-07-01 | 中兴通讯股份有限公司 | 日志处理方法、装置、设备和存储介质 |
CN111679932A (zh) * | 2020-06-01 | 2020-09-18 | 北京和德宇航技术有限公司 | 一种误码数据生成方法、装置、计算机设备及存储介质 |
CN111679932B (zh) * | 2020-06-01 | 2021-03-09 | 北京和德宇航技术有限公司 | 一种误码数据生成方法、装置、计算机设备及存储介质 |
CN112579566A (zh) * | 2020-12-14 | 2021-03-30 | 浪潮云信息技术股份公司 | 分布式id的生成方法及装置 |
CN114943205A (zh) * | 2022-06-08 | 2022-08-26 | 北京金橙子科技股份有限公司 | 一种身份识别编码uuid生成方法、系统、存储介质及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN107861833B (zh) | 2020-01-21 |
WO2019085350A1 (zh) | 2019-05-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107861833A (zh) | 识别码的生成方法和装置、计算机设备、可读存储介质 | |
CN109474578B (zh) | 报文消息校验方法、装置、计算机设备和存储介质 | |
US20190158296A1 (en) | Redactable document signatures | |
CN108848148B (zh) | 基于区块链的交易信息确认方法及装置 | |
JP6823785B2 (ja) | ネットワークにおけるノードの設定管理 | |
CN109255232B (zh) | 一种软件加载方法以及软件加载装置 | |
CN112817935A (zh) | 基于字段类型的数据处理方法、装置、设备及存储介质 | |
CN111143817A (zh) | 设备证明技术 | |
CN112363997B (zh) | 数据版本管理方法、装置及存储介质 | |
CN114172659A (zh) | 区块链系统中的消息传输方法、装置、设备及存储介质 | |
CN113590181A (zh) | 配置文件的校验方法、装置、设备及存储介质 | |
CN112711570A (zh) | 日志信息的处理方法、装置、电子设备及存储介质 | |
CN111949996A (zh) | 安全私钥的生成方法、加密方法、系统、设备及介质 | |
CN111147477A (zh) | 一种基于区块链网络的验证方法及装置 | |
CN110618989A (zh) | 信息处理方法、信息处理装置及相关产品 | |
CN103679045A (zh) | 文件安全性控制系统及方法 | |
CN115589298A (zh) | 区块链的信息验证方法、装置和系统、设备、介质 | |
CN109768853A (zh) | 一种密钥组分验证方法、装置及终端设备 | |
CN103198258B (zh) | 复合系统以及传输数据的方法 | |
CN109948326B (zh) | 一种异常状态回溯方法及终端 | |
CN108200060B (zh) | 基于web子系统的单点登录验证方法、服务器及存储介质 | |
CN113221151A (zh) | 基于区块链的数据处理方法、装置及存储介质 | |
CN112559546A (zh) | 数据库同步方法、装置、计算机设备及可读存储介质 | |
CN111752796B (zh) | 一种确定日志信息对应的机型的方法和装置 | |
CN109347639B (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 |