CN110377268A - 流水号生成方法、装置及存储介质 - Google Patents
流水号生成方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110377268A CN110377268A CN201910675298.9A CN201910675298A CN110377268A CN 110377268 A CN110377268 A CN 110377268A CN 201910675298 A CN201910675298 A CN 201910675298A CN 110377268 A CN110377268 A CN 110377268A
- Authority
- CN
- China
- Prior art keywords
- serial number
- random number
- current time
- time information
- value
- 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
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/22—Indexing; Data structures therefor; Storage structures
-
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2474—Sequence data queries, e.g. querying versioned data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Storage Device Security (AREA)
Abstract
本说明书实施例提供一种流水号生成方法、装置及存储介质。所述方法包括:接收流水号生成请求;获取接收到所述流水号生成请求时的当前时间信息;根据所述当前时间信息生成序列值;根据所述序列值确定随机数;根据所述随机数和当前时间信息生成流水号;反馈生成的所述流水号。所述方法可以增加流水号推测难度,从而提高了流水号的安全性,防止隐私的泄露。
Description
技术领域
本说明书实施例涉及计算机技术领域,特别涉及一种流水号生成方法、装置及存储介质。
背景技术
随着物流行业的迅速发展,物流速度越发迅速,越来越多的买家更加青睐网购以及通过快递单号来查询自己的快递更新情况。当我们在快递单号不小心输错一位的情况下会查到别人的快递单号信息。里面可能包含别的买家的收货住址信息以及电话信息,这样就可能对别的用户信息造成泄露。分析其中的原因主要就是在快递公司在设计快递单号的时候对其中一些固定位数呈现出规律性的设计。这样某些非法用户就可以利用其中固定位规律性改变其中某些数字进行试探性的攻击,重而窃取到别人的隐私信息。
现有的流水号设计为:固定业务信息+自增位,例如,SF20190704085313xxx,其中xxx为自增位,当用户发现一个流水号为SF20190704085313006,即自增位为006时,因此可判定SF20190704085313005、SF20190704085313004也是生成过的,如果该系统没有做过安全的验证措施,通过流水号就可以查到某些具体的信息。该用户就可以利用这个流水号去查询一些别人的信息,造成隐私泄露。因此有必要设计一个防枚举的流水号生成技术。
发明内容
本说明书实施例的目的是提供一种流水号生成方法、装置及存储介质,以提高流水号的安全性。
为解决上述问题,本说明书实施例提供一种流水号生成方法、装置及存储介质是这样实现的。
一种流水号生成方法,所述方法包括:接收流水号生成请求;获取接收到所述流水号生成请求时的当前时间信息;根据所述当前时间信息生成序列值;根据所述序列值确定随机数;根据所述随机数和当前时间信息生成流水号;反馈生成的所述流水号。
一种流水号生成方法,所述方法包括:发送流水号生成请求;接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
一种流水号生成装置,所述装置包括:接收模块,用于接收流水号生成请求;获取模块,用于获取接收到所述流水号生成请求时的当前时间信息;第一生成模块,用于根据所述当前时间信息生成序列值;确定模块,用于根据所述序列值确定随机数;第二生成模块,用于根据所述随机数和当前时间信息生成流水号;反馈模块,用于反馈生成的所述流水号。
一种流水号生成装置,所述装置包括:发送模块,用于发送流水号生成请求;接收模块,用于接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现:接收流水号生成请求;获取接收到所述流水号生成请求时的当前时间信息;根据所述当前时间信息生成序列值;根据所述序列值确定随机数;根据所述随机数和当前时间信息生成流水号;反馈生成的所述流水号。
一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现:发送流水号生成请求;接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
由以上本说明书实施例提供的技术方案可见,本说明书实施例提供的流水号生成方法,可以通过获取接收到所述流水号生成请求时的当前时间信息,根据所述当前时间信息生成序列值,根据所述序列值确定随机数,根据所述随机数和当前时间信息生成流水号。本说明书实施例提供的流水号生成方法,流水号中包含了随机数,其中随机数根据当前时间信息生成的序列值来确定的,所以能够保证数值的唯一性和不递增特性,同时增加推测难度,从而提高了流水号的安全性,防止隐私的泄露。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例一种流水号生成方法的流程图;
图2为本说明书实施例一种流水号生成方法的流程图;
图3为本说明书实施例一种流水号生成方法的流程图;
图4为本说明书实施例一种流水号生成装置的功能模块图;
图5为本说明书实施例一种流水号生成装置的功能模块图。
具体实施方式
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
流水号通常是由数字或字母或数字加字母组合而成的一组号码,流水号一般可应用于某活动中,表明参加人身份的号码;流水号也应用于工业生产中,每个产品有其唯一的流水号。一个流水号就是一个产品的身份证和识别码,号码中隐含了许多信息(如生产机床号),有助于于追溯质量问题;流水号还可应用于企业的业务中,很多地方的业务都有一个系统自动编码的号码,用来记录处理的顺序的号,就是流水号。比如银行业务中,都有流水号,通常用于记录个人相关业务来往信息,就是为了在系统里识别每笔业务的独特性的。
现有技术中,流水号的生成通常包括固定业务信息+自增位,即SF20190704085313xxx,其中xxx为自增位,当用户发现一个流水号为SF20190704085313006,即自增位为006时,因此可判定SF20190704085313005、SF20190704085313004也是生成过的,如果该系统没有做过安全的验证措施,通过流水号就可以查到某些具体的信息,这样某些非法用户就可以利用其中固定位规律性改变其中某些数字进行试探性的攻击,重而窃取到别人的隐私信息,因此有必要设计一个防枚举的流水号生成技术来提高流水号生成的安全性。
图1为本说明书实施例一种流水号生成方法的流程图,其中,所述流水号生成方法具体可包括以下步骤:
S100:客户端发送流水号生成请求。
在本说明书实施例中,发起流水号生成请求的客户端可以是具有逻辑运算功能的电子设备,所述电子设备可以为台式电脑、平板电脑、笔记本电脑、移动手机、工作站等。当然,客户端并不限于上述具有一定实体的电子设备,其还可以为运行于上述电子设备中的软体。还可以是一种通过程序开发形成的程序软件,该程序软件可以运行于上述电子设备中。
所述流水号生成请求可以是用户根据实际需要,通过操作客户端,例如点击客户端上的流水号生成按钮,客户端响应用户点击流水号生成按钮,并将流水号生成请求发送至服务器;所述客户端还可以定时发送流水号生成请求,或者响应业务的发生,并自动为该业务发送流水号生成请求。客户端还可以以其他任意方式发送流水号生成请求,本说明书实施例在此不作限定。
S110:服务器接收流水号生成请求。
S111:服务器获取接收到所述流水号生成请求时的当前时间信息。
服务器在接收到所述流水号生成请求时,可以记录当前接收时间。
S112:根据所述当前时间信息生成序列值。
在一些实施例中,可以根据所述当前时间信息的时间精度,对当前时间信息进行编码,得到一个编码值,将所述当前时间信息与所述编码值组合得到所述序列值。
以下举例说明本说明书实施例根据所述当前时间信息生成序列值。
在当服务端接收到客户端请求时,根据当前时间信息生成如下格式的序列值:yyMMddHHmmssS,例如当前时间为2019/07/0322:41:52:320,则序列值可以为:190703224152S。其中,序列值末位的S可以根据当前时间的毫秒数来确定。例如,可以对当前时间的毫秒数320除以10取余数,得到0,并将0作为序列值的末位,得到序列值1907032241520;还可以对当前时间的毫秒数320除以16取余数,得到0,并对十进制0进行编码,将十进制0转成十六进制字符即编码值“0”,然后将编码值“0”作为序列值的末位,得到序列值1907032241520;还可以对对当前时间的毫秒数320除以32取余数,得到0,并对十进制0进行编码,将十进制0转成三十六进制字符即编码值“0”,然后将编码值“0”作为序列值的末位,得到序列值1907032241520。上述仅仅列举了几个例子说明序列值的末位是如何根据当前时间的毫秒数确定的,本领域技术人员可以根据实际需求,对当前时间的毫秒数除以任意整数取余数,并对余数进行任意进制的编码,如八进制、十进制、十六进制等,得到编码值作为所述序列值的末位。其中,所述序列值的未位可以是1位数、2位数或者任意位数的数。
在一些实施例中,所述序列值的末位为n位数时,可以对当前时间的毫秒数除以任意整数取余数,并对余数进行任意进制的编码,使得编码后的编码值为n位数。其中,n可以是任意大于等于1的整数。例如,所述序列值的末位为1位数时,可以对当前时间的毫秒数除以任意整数取余数,并对余数进行任意进制的编码,如八进制、十进制、十六进制等,使得编码后的编码值为1位数。
在本说明书以下步骤中,以序列值为1907032241520为例,进行流水号的生成步骤。
S113:根据所述序列值确定随机数。
在一些实施例中,根据所述序列值生成一个由多个随机数组成的随机数队列,根据预设规则从所述随机数队列中选取随机数。具体的,可以对所述序列值进行多次赋值,得到规则排列的多个数值,将所述规则排列的多个数值的顺序打乱,得到一个随机数队列,再按照一定的规则从随机数队列中选取随机数。
在一些实施例中,可以以Key-Value的形式来存储序列值与其对应的由多个随机数组成的随机数队列。举例来说,以序列值为1907032241520为例,首先查找数据库中是否存储有该序列值对应的由多个随机数组成的随机数队列,如果有,则从该随机数队列中选取一个随机数;否则针对该序列值生成一个由多个随机数组成的随机数队列。
在一些实施例中,可以通过以下方式生成一个由多个随机数组成的随机数队列:将所述序列值赋给一个变量,并将赋值后的数值乘以多个不同的系数,得到规则排列的多个数值。例如序列值为1907032241520,取序列值的末位0,并将其转换为十进制数,转成十进制也是0,再将将这个值赋给变量i,将赋值后的数值乘以多个不同的系数,使得队列里面存储的值为i×256~(i+1)×256-1共256个数的乱序排列,再为该队列添加0×256~1×256-1即从0到255这些数到队列中去,为队列进行排序,从而得到由规则排列的多个数值组成的顺序队列。
在一些实施例中,上述赋值的步骤,序列值末位是根据S112步骤中得到的末位选取的,例如S112中序列值的末位是n位数,则赋值步骤中,可以取序列值末位的n位数,其中n可以是任意大于等于1的整数。
在一些实施例中,上述赋值的步骤,在选取序列值末位后,还可以将其转换为十进制以外的任意进制,例如十六进制、三十二进制等,也可以不进行进制的转换。
在一些实施例中,上述赋值的步骤,可以将选取的值赋给变量i,队列里面存储的值还可以为i×128~(i+1)×128-1共128个数的乱序排列,也可以为i×512~(i+1)×512-1共512个数的乱序排列,也可以是其他任意个数的乱序排序,本说明书实施例对此不作限定。相应的,如果队列里面存储的值为128个数的乱序排列,则为该队列添加0×128~1×128-1即从0到128这些数到队列中去,也可以添加0×256~1×256-1中的0到128这些数到队列中去,为队列进行排序,从而得到由规则排列的多个数值组成的顺序队列。
在一些实施例中,可以将上述得到的顺序队列打乱从而得到一个随机数队列,例如,可以采用生成256以内的随机数的方式,来打乱队列。具体的,当每次取到随机数n(0<=n<=256)时,把队列最左端的数插入到队列的第n个位置,也可以把队列最右端的数插入到队列的第n个位置,还可以把队列中间的某一位开始的数插入到队列的第n个位置,如此循环256/3次,顺序队列就会基本乱序,此时乱序的队列为由多个随机数组成的随机数队列,可以以Key-Value的形式存储至数据库中。
在一些实施例中,可以根据顺序队列中包含的数值个数来确定生成随机数的个数。例如如果顺序队列中包含了128个数值,则可以采用生成128以内的随机数的方式,来打乱队列;如果顺序队列中包含了512个数值,则可以采用生成512以内的随机数的方式,来打乱队列。
在确定所述序列值对应的由多个随机数组成的随机数队列后,可以根据预设规则从所述随机数队列中选取随机数。具体的,可以从所述随机数队列中最左端从左往右、也可以从所述随机数队列中最右端右往左,或者可以从中间某一位开始从左往右或者从右往左的方式选取一个随机数或多个随机数。
在一些实施例中,可以将所述随机数进行编码,将所述随机数转换为十六进制数或者三十二进制数,从而得到编码后的随机数。例如在所述序列值为1907032241520、选取的随机数为250时,则可以确定随机数为250。在一些实施例中,还可以将随机数250进行十六进制转换为EA,则将确定随机数为字符串“EA”。以上步骤的随机数采用十六进制,一方面可以增加秒级内的生成个数,同时增加推测难度,同时本方案中还可以使用三十二进制来替代十六进制,来提高一秒内的生成不重复个数,实际开发过程中也可以增加随机位来达到该效果。
在一些实施例中,为了实际需要,还可以规定随机数的位数,例如规定随机数的位数为三位数,位数不够3位可以左补0,因为左补0不会改变数值的大小,保证数值的唯一性。例如将随机数250进行十六进制转换为EA,不足三位就左补0得到“0EA”,将确定随机数为字符串“0EA”。
当该秒内另一毫秒数的请求取到这个序列值时,便可以不用生成随机数队列,直接从随机数队列中选取随机数。举例来说,假设该秒内另一个请求的时间为2019/07/0322:41:52:336,使用毫秒数336对16取余,同样得到的数为0,序列值与请求时间2019/07/0322:41:52:320的序列值同样为1907032241520,则此时可以直接读取到序列值从对应的随机数序列中返回随机数,因为随机数是从所述随机数队列中最左端从左往右、也可以从所述随机数队列中最右端右往左,或者可以从中间某一位开始从左往右或者从右往左的方式按一点规则选取的,因此请求的时间为2019/07/0322:41:52:336和2019/07/0322:41:52:320所确定的随机数是不相同的,保证了序列值相同的流水号生成请求所确定的随机数不同,从而保证了流水号生成的唯一性。假设此时数为198,如果不进行进制转换,则198为随机数,如果将198转成16进制则为C6,再左补0得到“0C6”。
S114:根据所述随机数和当前时间信息生成流水号,并将所述流水号返回至客户端。
服务器可以根据确定的随机数以及当前时间信息来生成流水号。其中,所述当前时间信息包括当前时间的时间戳,可以将所述时间戳与所述随机数进行拼接得到流水号。具体的,在接收到流水号生成请求时间为2019/07/0322:41:52:320时,根据上述步骤,确定了随机数为250,则可以拼接时间戳即可得到流水号190703224152250,并将该值返回给客户端。还可以将随机数250转换为十六进制数EA,并左补0得到“0EA”,将“0EA”作为随机数,拼接时间戳即可得到流水号1907032241520EA。在本拼接过程中去掉了毫秒取余数,防止用户对数组值范围进行判断。
在一些实施例中,服务器还可以将所述随机数与预先设置的固定位进行拼接,所述固定位可以表征业务信息、时间信息、地域信息等。所述固定位可以根据实际需要进行设置,本说明书实施例对此不作限定。
S101:客户端接收返回的流水号。
本说明书实施例提供的流水号生成方法,可以通过获取接收到所述流水号生成请求时的当前时间信息,根据所述当前时间信息生成序列值,根据所述序列值确定随机数,根据所述随机数和当前时间信息生成流水号。本说明书实施例提供的流水号生成方法,每次获取随机数都是从一个不存在重复数且无序的队列中取值,所以能够保证数值的唯一性和不递增特性,同时增加推测难度,从而提高了流水号的安全性,防止隐私的泄露。
图2为本说明书实施例一种流水号生成方法的流程图。所述流水号生成方法以服务器为执行主体,可以用于生成流水号,具体可以包括以下步骤。
S210:接收流水号生成请求。
所述流水号生成请求可以是用户根据实际需要,通过操作客户端,例如点击客户端上的流水号生成按钮,客户端响应用户点击流水号生成按钮,并将流水号生成请求发送至服务器;所述客户端还可以定时发送流水号生成请求,或者响应业务的发生,并自动为该业务发送流水号生成请求。服务器可以接收流水号生成请求。
S220:获取接收到所述流水号生成请求时的当前时间信息。
服务器在接收到所述流水号生成请求时,可以记录当前接收时间。
S220:根据所述当前时间信息生成序列值。
在一些实施例中,可以根据所述当前时间信息的时间精度,对当前时间信息进行编码,得到一个编码值,将所述当前时间信息与所述编码值组合得到所述序列值。
以下举例说明本说明书实施例根据所述当前时间信息生成序列值。
在当服务端接收到客户端请求时,根据当前时间信息生成如下格式的序列值:yyMMddHHmmssS,其中yyMMddHHmmss为当前时间信息,末位S为对当前时间信息进行编码,得到一个编码值,序列值由当前时间信息与所述编码值组合而成。例如当前时间为2019/07/0322:41:52:320,则序列值可以为:190703224152S。其中,序列值末位的S可以根据当前时间的毫秒数来确定。例如,可以对当前时间的毫秒数320除以10取余数,得到0,并将0作为序列值的末位,得到序列值1907032241520;还可以对当前时间的毫秒数320除以16取余数,得到0,并将并将十进制0转成十六进制字符即“0”,然后将字符“0”作为序列值的末位,得到序列值1907032241520;还可以对对当前时间的毫秒数320除以32取余数,得到0,并将并将十进制0转成三十六进制字符即“0”,然后将字符“0”作为序列值的末位,得到序列值1907032241520。上述仅仅列举了几个例子说明序列值的末位是如何根据当前时间的毫秒数确定的,本领域技术人员可以根据实际需求,对当前时间的毫秒数除以任意整数取余数,并对余数进行任意进制的编码,如八进制、十进制、十六进制等,得到所述序列值的末位,其中,所述未位可以是1位数、2位数或者任意位数的数。
在一些实施例中,所述末位为1位数,可以对当前时间的毫秒数除以任意整数取余数,并对余数进行任意进制的编码,如八进制、十进制、十六进制等,使得编码后的字符为1位数。
在本说明书以下步骤中,以序列值为1907032241520为例,进行流水号的生成步骤。
S240:根据所述序列值确定随机数。
在一些实施例中,根据所述序列值生成一个由多个随机数组成的随机数队列,根据预设规则从所述随机数队列中选取随机数。具体的,可以对所述序列值进行多次赋值,得到规则排列的多个数值,将所述规则排列的多个数值的顺序打乱,得到一个随机数队列,再按照一定的规则从随机数队列中选取随机数。
在一些实施例中,可以以Key-Value的形式来存储序列值与其对应的由多个随机数组成的随机数队列。举例来说,以序列值为1907032241520为例,首先查找数据库中是否存储有该序列值对应的由多个随机数组成的随机数队列,如果有,则从该随机数队列中选取一个随机数;否则针对该序列值生成一个由多个随机数组成的随机数队列。
在一些实施例中,可以通过以下方式生成一个由多个随机数组成的随机数队列:对序列值进行多次赋值,得到规则排列的多个数值。例如序列值为1907032241520,取序列值的末位0,并将其转换为十进制数,转成十进制也是0,再将将这个值赋给变量i,队列里面存储的值为i×256~(i+1)×256-1共256个数的乱序排列,再为该队列添加0×256~1×256-1即从0到255这些数到队列中去,为队列进行排序,从而得到由规则排列的多个数值组成的顺序队列。
在一些实施例中,上述赋值的步骤,选取的序列值末位是根据S112步骤中得到的末位,例如S112中序列值的末位是两位数,则赋值步骤中,可以取序列值末位的两位数,如果S112中序列值的末位是三位数,则赋值步骤中,可以取序列值末位的三位数。
在一些实施例中,上述赋值的步骤,在选取序列值末位后,还可以将其转换为十进制以外的任意进制,例如十六进制、三十二进制等,也可以不进行进制的转换。
在一些实施例中,上述赋值的步骤,可以将选取的值赋给变量i,队列里面存储的值还可以为i×128~(i+1)×128-1共128个数的乱序排列,也可以为i×512~(i+1)×512-1共512个数的乱序排列,也可以是其他任意个数的乱序排序,本说明书实施例对此不作限定。相应的,如果队列里面存储的值为128个数的乱序排列,则为该队列添加0×128~1×128-1即从0到128这些数到队列中去,也可以添加0×256~1×256-1中的0到128这些数到队列中去,为队列进行排序,从而得到由规则排列的多个数值组成的顺序队列。
在一些实施例中,可以将上述得到的顺序队列打乱从而得到一个随机数队列,例如,可以采用生成256以内的随机数的方式,来打乱队列。具体的,当每次取到随机数n(0<=n<=256)时,把队列最左端的数插入到队列的第n个位置,也可以把队列最右端的数插入到队列的第n个位置,还可以把队列中间的某一位开始的数插入到队列的第n个位置,如此循环256/3次,顺序队列就会基本乱序,此时乱序的队列为由多个随机数组成的随机数队列,可以以Key-Value的形式存储至数据库中。
在一些实施例中,可以根据顺序队列中包含的数值个数来确定生成随机数的个数。例如如果顺序队列中包含了128个数值,则可以采用生成128以内的随机数的方式,来打乱队列;如果顺序队列中包含了512个数值,则可以采用生成512以内的随机数的方式,来打乱队列。
在确定所述序列值对应的由多个随机数组成的随机数队列后,可以根据预设规则从所述随机数队列中选取随机数。具体的,可以从所述随机数队列中最左端从左往右、也可以从所述随机数队列中最右端右往左,或者可以从中间某一位开始从左往右或者从右往左的方式选取一个随机数或多个随机数。
在一些实施例中,可以将所述随机数进行编码,将所述随机数转换为十六进制数或者三十二进制数,从而得到编码后的随机数。例如在所述序列值为1907032241520、选取的随机数为250时,则可以确定随机数为250。在一些实施例中,还可以将随机数250进行十六进制转换为EA,则将确定随机数为字符串“EA”。以上步骤的随机数采用十六进制,一方面可以增加秒级内的生成个数,同时增加推测难度,同时本方案中还可以使用三十二进制来替代十六进制,来提高一秒内的生成不重复个数,实际开发过程中也可以增加随机位来达到该效果。
在一些实施例中,为了实际需要,还可以规定随机数的位数,例如规定随机数的位数为三位数,位数不够3位可以左补0,因为左补0不会改变数值的大小,保证数值的唯一性。例如将随机数250进行十六进制转换为EA,不足三位就左补0得到“0EA”,将确定随机数为字符串“0EA”。
当该秒内另一毫秒数的请求取到这个序列值时,便可以不用生成随机数队列,直接从随机数队列中选取随机数。举例来说,假设该秒内另一个请求的时间为2019/07/0322:41:52:336,使用毫秒数336对16取余,同样得到的数为0,序列值与请求时间2019/07/0322:41:52:320的序列值同样为1907032241520,则此时可以直接读取到序列值从对应的随机数序列中返回随机数,因为随机数是从所述随机数队列中最左端从左往右、也可以从所述随机数队列中最右端右往左,或者可以从中间某一位开始从左往右或者从右往左的方式按一点规则选取的,因此请求的时间为2019/07/0322:41:52:336和2019/07/0322:41:52:320所确定的随机数是不相同的,保证了序列值相同的流水号生成请求所确定的随机数不同,从而保证了流水号生成的唯一性。假设此时数为198,如果不进行进制转换,则198为随机数,如果将198转成16进制则为C6,再左补0得到“0C6”。
S250:根据所述随机数和当前时间信息生成流水号。
服务器可以根据确定的随机数以及当前时间信息来生成流水号。其中,所述当前时间信息包括当前时间的时间戳,可以将所述时间戳与所述随机数进行拼接得到流水号。具体的,在接收到流水号生成请求时间为2019/07/0322:41:52:320时,根据上述步骤,确定了随机数为250,则可以拼接时间戳即可得到流水号190703224152250,并将该值返回给客户端。还可以将随机数250转换为十六进制数EA,并左补0得到“0EA”,将“0EA”作为随机数,拼接时间戳即可得到流水号1907032241520EA。在本拼接过程中去掉了毫秒取余数,防止用户对数组值范围进行判断。
在一些实施例中,服务器还可以将所述随机数与预先设置的固定位进行拼接,所述固定位可以表征业务信息、时间信息、地域信息等。所述固定位可以根据实际需要进行设置,本说明书实施例对此不作限定。
S260:反馈生成的所述流水号。
本说明书实施例提供的流水号生成方法,可以通过获取接收到所述流水号生成请求时的当前时间信息,根据所述当前时间信息生成序列值,根据所述序列值确定随机数,根据所述随机数和当前时间信息生成流水号。本说明书实施例提供的流水号生成方法,每次获取随机数都是从一个不存在重复数且无序的队列中取值,所以能够保证数值的唯一性和不递增特性,同时增加推测难度,从而提高了流水号的安全性,防止隐私的泄露。
图3为本说明书实施例一种流水号生成方法的流程图。述流水号生成方法以客户端为执行主体,可以用于生成流水号,具体可以包括以下步骤。
S310:发送流水号生成请求。
在本说明书实施例中,发起流水号生成请求的客户端可以是具有逻辑运算功能的电子设备,所述电子设备可以为台式电脑、平板电脑、笔记本电脑、移动手机、工作站等。当然,客户端并不限于上述具有一定实体的电子设备,其还可以为运行于上述电子设备中的软体。还可以是一种通过程序开发形成的程序软件,该程序软件可以运行于上述电子设备中。
所述流水号生成请求可以是用户根据实际需要,通过操作客户端,例如点击客户端上的流水号生成按钮,客户端响应用户点击流水号生成按钮,并将流水号生成请求发送至服务器;所述客户端还可以定时发送流水号生成请求,或者响应业务的发生,并自动为该业务发送流水号生成请求。客户端还可以以其他任意方式发送流水号生成请求,本说明书实施例在此不作限定。
S320:接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
本说明书实施例提供的流水号生成方法,可以通过发送流水号生成请求,服务器获取接收到所述流水号生成请求时的当前时间信息,根据所述当前时间信息生成序列值,根据所述序列值确定随机数,根据所述随机数和当前时间信息生成流水号。本说明书实施例提供的流水号生成方法,每次获取随机数都是从一个不存在重复数且无序的队列中取值,所以能够保证数值的唯一性和不递增特性,同时增加推测难度,从而提高了流水号的安全性,防止隐私的泄露。
本说明书实施例还提供了一种流水号生成方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:接收流水号生成请求;获取接收到所述流水号生成请求时的当前时间信息;根据所述当前时间信息生成序列值;根据所述序列值确定随机数;根据所述随机数和当前时间信息生成流水号,反馈生成的所述流水号。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可用于存储所述计算机程序和/或模块,所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、文字转换功能等)等;存储数据区可存储根据用户终端的使用所创建的数据(比如音频数据、文字消息数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器。在本实施方式中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图4,在软件层面上,本说明书实施例还提供了一种流水号生成装置,该装置具体可以包括以下的功能模块。
接收模块410,用于接收流水号生成请求;
获取模块420,用于获取接收到所述流水号生成请求时的当前时间信息;
第一生成模块430,用于根据所述当前时间信息生成序列值;
确定模块440,用于根据所述序列值确定随机数;
第二生成模块450,用于根据所述随机数和当前时间信息生成流水号;
反馈模块460,用于反馈生成的所述流水号。
在一些实施例中,所述第一生成模块430包括:编码模块,用于根据所述当前时间信息的时间精度,对当前时间信息进行编码,得到一个编码值;组合模块,用于将所述当前时间信息与所述编码值组合得到所述序列值。
在一些实施例中,所述确定模块440包括:第三生成模块,用于根据所述序列值生成一个由多个随机数组成的随机数队列;选取模块,用于根据预设规则从所述随机数队列中选取随机数。
本说明书实施例还提供了一种流水号生成方法的计算机可读存储介质,所述计算机可读存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:发送流水号生成请求;接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可用于存储所述计算机程序和/或模块,所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、文字转换功能等)等;存储数据区可存储根据用户终端的使用所创建的数据(比如音频数据、文字消息数据等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器。在本实施方式中,该计算机可读存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图5,在软件层面上,本说明书实施例还提供了一种流水号生成装置,该装置具体可以包括以下的功能模块。
发送模块510,用于发送流水号生成请求;
接收模块520,用于接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例和设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域技术人员在阅读本说明书文件之后,可以无需创造性劳动想到将本说明书列举的部分或全部实施例进行任意组合,这些组合也在本说明书公开和保护的范围内。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(AlteraHardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。
Claims (12)
1.一种流水号生成方法,其特征在于,所述方法包括:
接收流水号生成请求;
获取接收到所述流水号生成请求时的当前时间信息;
根据所述当前时间信息生成序列值;
根据所述序列值确定随机数;
根据所述随机数和当前时间信息生成流水号;
反馈生成的所述流水号。
2.根据权利要求1所述的方法,其特征在于,所述根据所述当前时间信息生成序列值包括:
根据所述当前时间信息的时间精度,对当前时间信息进行编码,得到一个编码值;
将所述当前时间信息与所述编码值组合得到所述序列值。
3.根据权利要求1所述的方法,其特征在于,所述根据所述序列值确定随机数包括:
根据所述序列值生成一个由多个随机数组成的随机数队列;
根据预设规则从所述随机数队列中选取随机数。
4.根据权利要求3所述的方法,其特征在于所述根据所述序列值生成一个随机数队列包括:
将所述序列值赋给一个变量,并将赋值后的数值乘以多个不同的系数,得到规则排列的多个数值;
将所述规则排列的多个数值的顺序打乱,得到一个随机数队列。
5.根据权利要求1所述的方法,其特征在于,所述根据所述随机数和当前时间信息生成流水号包括:
对所述随机数进行编码,将编码后的随机数和当前时间信息组合生成流水号。
6.一种流水号生成方法,其特征在于,所述方法包括:
发送流水号生成请求;
接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
7.一种流水号生成装置,其特征在于,所述装置包括:
接收模块,用于接收流水号生成请求;
获取模块,用于获取接收到所述流水号生成请求时的当前时间信息;
第一生成模块,用于根据所述当前时间信息生成序列值;
确定模块,用于根据所述序列值确定随机数;
第二生成模块,用于根据所述随机数和当前时间信息生成流水号;
反馈模块,用于反馈生成的所述流水号。
8.根据权利要求7所述的装置,其特征在于,所述第一生成模块包括:
编码模块,用于根据所述当前时间信息的时间精度,对当前时间信息进行编码,得到一个编码值;
组合模块,用于将所述当前时间信息与所述编码值组合得到所述序列值。
9.根据权利要求7所述的装置,其特征在于,所述确定模块包括:
第三生成模块,用于根据所述序列值生成一个由多个随机数组成的随机数队列;
选取模块,用于根据预设规则从所述随机数队列中选取随机数。
10.一种流水号生成装置,其特征在于,所述装置包括:
发送模块,用于发送流水号生成请求;
接收模块,用于接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
11.一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现:接收流水号生成请求;获取接收到所述流水号生成请求时的当前时间信息;根据所述当前时间信息生成序列值;根据所述序列值确定随机数;根据所述随机数和当前时间信息生成流水号;反馈生成的所述流水号。
12.一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被执行时实现:发送流水号生成请求;接收服务器根据所述流水号生成请求返回的流水号;其中,所述流水号是根据服务器接收到所述流水号生成请求时的当前时间信息和随机数生成;其中,所述随机数是根据所述当前时间信息生成序列值,并根据所述序列值确定的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910675298.9A CN110377268A (zh) | 2019-07-25 | 2019-07-25 | 流水号生成方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910675298.9A CN110377268A (zh) | 2019-07-25 | 2019-07-25 | 流水号生成方法、装置及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110377268A true CN110377268A (zh) | 2019-10-25 |
Family
ID=68255847
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910675298.9A Pending CN110377268A (zh) | 2019-07-25 | 2019-07-25 | 流水号生成方法、装置及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110377268A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795604A (zh) * | 2019-10-29 | 2020-02-14 | 中国工商银行股份有限公司 | 生成交易流水号的方法、装置、计算设备和介质 |
CN111124359A (zh) * | 2019-12-20 | 2020-05-08 | 深圳猛犸电动科技有限公司 | 流水号生成方法、装置、系统、终端设备及存储介质 |
CN111708538A (zh) * | 2020-05-29 | 2020-09-25 | 平安医疗健康管理股份有限公司 | 事务循环方法、装置、计算机设备及计算机可读存储介质 |
CN112835555A (zh) * | 2021-01-22 | 2021-05-25 | 广东智源机器人科技有限公司 | 随机数生成方法、装置和设备 |
CN113467974A (zh) * | 2021-07-21 | 2021-10-01 | 上海云海万邦数据科技有限公司 | 一种标识信息生成方法 |
CN114172936A (zh) * | 2021-12-08 | 2022-03-11 | 长讯通信服务有限公司 | 一种应用于物联网设备通信可信的方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110270762A1 (en) * | 2010-04-30 | 2011-11-03 | Gsimedia Corporation | Secure Data Transfer From a Vending Device to Portable Data Storage Devices |
CN106412035A (zh) * | 2016-09-14 | 2017-02-15 | 联动优势电子商务有限公司 | 一种流水号的生成方法及终端 |
CN106657216A (zh) * | 2016-09-19 | 2017-05-10 | 腾讯征信有限公司 | 序列号生成方法和装置 |
CN109002276A (zh) * | 2018-06-19 | 2018-12-14 | 深圳市买买提信息科技有限公司 | 流水号生成方法、装置、终端设备及存储介质 |
CN109828990A (zh) * | 2019-02-02 | 2019-05-31 | 中国银行股份有限公司 | 一种交易流水号生成方法、服务器、设备及介质 |
-
2019
- 2019-07-25 CN CN201910675298.9A patent/CN110377268A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110270762A1 (en) * | 2010-04-30 | 2011-11-03 | Gsimedia Corporation | Secure Data Transfer From a Vending Device to Portable Data Storage Devices |
CN106412035A (zh) * | 2016-09-14 | 2017-02-15 | 联动优势电子商务有限公司 | 一种流水号的生成方法及终端 |
CN106657216A (zh) * | 2016-09-19 | 2017-05-10 | 腾讯征信有限公司 | 序列号生成方法和装置 |
CN109002276A (zh) * | 2018-06-19 | 2018-12-14 | 深圳市买买提信息科技有限公司 | 流水号生成方法、装置、终端设备及存储介质 |
CN109828990A (zh) * | 2019-02-02 | 2019-05-31 | 中国银行股份有限公司 | 一种交易流水号生成方法、服务器、设备及介质 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795604A (zh) * | 2019-10-29 | 2020-02-14 | 中国工商银行股份有限公司 | 生成交易流水号的方法、装置、计算设备和介质 |
CN111124359A (zh) * | 2019-12-20 | 2020-05-08 | 深圳猛犸电动科技有限公司 | 流水号生成方法、装置、系统、终端设备及存储介质 |
CN111708538A (zh) * | 2020-05-29 | 2020-09-25 | 平安医疗健康管理股份有限公司 | 事务循环方法、装置、计算机设备及计算机可读存储介质 |
CN111708538B (zh) * | 2020-05-29 | 2022-03-22 | 平安医疗健康管理股份有限公司 | 事务循环方法、装置、计算机设备及计算机可读存储介质 |
CN112835555A (zh) * | 2021-01-22 | 2021-05-25 | 广东智源机器人科技有限公司 | 随机数生成方法、装置和设备 |
CN113467974A (zh) * | 2021-07-21 | 2021-10-01 | 上海云海万邦数据科技有限公司 | 一种标识信息生成方法 |
CN113467974B (zh) * | 2021-07-21 | 2024-04-05 | 上海南洋万邦软件技术有限公司 | 一种标识信息生成方法 |
CN114172936A (zh) * | 2021-12-08 | 2022-03-11 | 长讯通信服务有限公司 | 一种应用于物联网设备通信可信的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110377268A (zh) | 流水号生成方法、装置及存储介质 | |
US10956684B2 (en) | Topic kernelization for real-time conversation data | |
US20180365254A1 (en) | Method and apparatus for processing information flow data | |
US10284513B2 (en) | Obtainability management in a social networking environment | |
WO2019070338A1 (en) | SYSTEM AND METHOD FOR SUPPORTING AND ROUTING INTELLIGENT AND AUTOMATIC ELECTRONIC COMMUNICATION | |
US11366818B2 (en) | Context-aware dynamic content assist | |
US11019019B2 (en) | Dynamic hashtag ordering based on projected interest | |
CN108599973B (zh) | 一种日志关联方法、装置及设备 | |
CN110297955B (zh) | 一种信息查询方法、装置、设备及介质 | |
US10956470B2 (en) | Facet-based query refinement based on multiple query interpretations | |
US10936815B2 (en) | Removable spell checker device | |
CN105678129B (zh) | 一种确定用户身份信息的方法及设备 | |
CN111523001A (zh) | 用于存储数据的方法、装置、设备以及存储介质 | |
CN112514349A (zh) | 利用对加密匹配索引进行的精确和模糊匹配来检测重复 | |
CN112115113B (zh) | 数据存储系统、方法、装置、设备以及存储介质 | |
WO2020207086A1 (zh) | 一种信息的处理系统、方法、装置及设备 | |
CN108550033A (zh) | 一种显示数字对象唯一标识符的方法及装置 | |
CN111178846B (zh) | 一种工作流文件生成方法、装置、设备及存储介质 | |
CN113326363A (zh) | 搜索方法及装置、预测模型训练方法及装置、电子设备 | |
CN112312335A (zh) | 一种提醒短信发送方法、装置和电子设备 | |
CN108595395B (zh) | 一种昵称的生成方法、装置及设备 | |
Singh | Impact of technology in library services | |
CN109120783A (zh) | 信息获取方法及装置、移动终端和计算机可读存储介质 | |
CN107943923A (zh) | 电报码数据库的构建方法、电报码识别方法及装置 | |
CN112581141A (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: 20191025 |
|
RJ01 | Rejection of invention patent application after publication |