具体实施方式
图1是业务实现中的场景示意图。本申请实施例技术方案可以在不同用户之间实现相关业务,例如以实现“红包”发放业务,“优惠券”发放业务等,其中红包发发送业务具体可以是指,一个用户通过将自己的资金或其它虚拟物品等,通过发放红包的方式给其它用户。现有技术在实现相关业务时,通常需要知道业务发起方用户知道准确的业务接收方用户才能发起业务,并且,往往是需要生成一个URL地址,或者生成包括URL的二维码的方式来通知业务接收方用户,这样实现过程非常复杂。例如,图1所示场景,若用户A若希望与用户B、用户C等实现数据交互时,比如以实现“红包”的发放业务为例,用户A必须一一指定用户B、用户C等为目标对象,则用户数量更多时会耗费用户A的大量时间资源。同时,用户A对于用户B、用户C等的指定,需要以用户B、用户C等为用户A的关联用户为前提,比如用户B、用户C等需要以“好友”等形式,事先被记录于用户A的通信录中;同时,在此过程中,业务接收方用户,如用户B、用户C还需要根据用户A发起的业务的业务链接,例如URL或二维码,来访问并完成相应的业务,业务实现过程较为复杂。
本申请实施例中,可以基于口令来实现相关业务,具体地,如图2所示,该业务实现过程中,可以“口令”为中介,或者也可以称为业务接口,实现用户A与用户B之间的交互。具体地,由用户A向服务端请求后,服务端为需要交互的对象生成相关联的口令,并将该口令下发至用户A;用户A可以通过直接发送、分享至社交网络平台或口述等任意方式,将口令展示给用户B;那么,当用户B向服务端发起包含该口令的请求时,即可获得相关联的交互对象。
可见,基于口令形式的业务实现过程中,交互过程更为简单、灵活,但是,基于口令与交互数据之间的关联关系,需要确保口令生成过程中的生成效率和唯一性,以保证高效、安全的业务实现。因此,本申请实施例就是提供一种口令生成方法,可应用于上述的业务中,作为业务访问的接口,以满足高效、安全的业务实现需求。可以理解的是,本申请实施例提供的口令生成方法,除了可以应用于上述的业务访问中外,也可以应用于其他需要口令的场合,例如作为随机密码的场合等,在此不做限制。
图3示出了根据本申请一示例性实施例的一种口令生成方法的流程图,如图3所示,该方法应用于服务端,可以包括以下步骤:
步骤302,当检测到口令生成指令时,生成对应于所述口令生成指令的口令生成序号。
在本实施例中,对于非分布式系统结构的服务器,可以通过自增序列生成口令生成序号,比如当自增序列为区间[1,99](可以预先根据需求进行区间设置,或者采用全号段)时,则首个接收到的口令生成指令对应的口令生成序号为自增ID=1、第二个收到的口令生成指令对应的口令生成序号为自增ID=2,以此类推。
在本实施例中,对于分布式系统结构的服务器,可以确定用于处理所述口令生成指令的分布式服务器节点,并在所述分布式服务器节点对应的号段内,按照检测到所述口令生成指令的顺序,通过自增序列生成所述口令生成序列;其中,不同分布式服务器节点对应于不同号段。通过应用分布式系统结构,使得所有分布式服务器节点可以并发处理口令生成指令,以提升口令生成效率;同时,通过为不同的分布式服务器节点分配不同的号段,即自增序列对应的区间没有重叠,确保每个口令生成序号都具有全局唯一性,从而生成的口令也具有全局唯一性。
步骤304,将所述口令生成序号转换为伪随机数。
在本实施例中,可以获取预定义的号段与处理函数之间的映射关系,选取应用于所述口令生成序号的处理函数;然后,根据所述处理函数对所述口令生成序号进行处理,得到所述伪随机数。
其中,不同号段可以采用相同的处理函数,也可以采用不同的处理函数,以确保伪随机数的高随机性。需要说明的是,相关技术中用于生成伪随机数的处理函数,均可以应用于本申请的技术方案中,本申请并不对此进行限制。
步骤306,根据为所述口令生成序号预配置的口令类型,选取对应的密码本。
在本实施例中,口令类型可以包括:字符数量和字符组合方式。其中,口令为字符串形式,字符数量即构成该字符串的字符个数,比如“0000”的字符数量为4、“adf94d”的字符数量为6;字符组合方式,即字符串的每位字符的类型,比如“所有字符均为数字”、“收尾字符为数字且其余字符为字母”等,其中每个字符可以为数字、字母、汉字、特殊符号等任意类型,本申请并不对此进行限制。
在本实施例中,当所述伪随机数的位数小于所述字符数量时,对所述伪随机数进行补位,并根据所述密码本将补位后的伪随机数生成为所述口令。比如生成的伪随机数为“101”,而口令类型中的字符数量为4,则可以通过补位处理,将伪随机数更新为“0101”,即在最前方添加0;当然,显然也可以采用其他补位处理方式,比如在最后方添加0或其他字符,实际采用的补位处理方式可以根据需求进行预先配置或实时设置。
在本实施中,根据所述字符数量和所述字符组合方式,选取对应于所述伪随机数中的每一位字符的密码本,其中每一密码本中包含所述伪随机数中对应的明文字符与所述字符组合方式中对应的密文字符之间的映射关系;以及,所述根据所述密码本对所述伪随机数进行转换,包括:依次确定所述伪随机数中的每一位字符对应的密码本,按照所述密码本中包含的所述映射关系,将所述伪随机数中的明文字符替换为对应的密文字符。
步骤308,根据所述密码本对所述伪随机数进行转换,得到对应于所述口令生成指令的口令。
在本实施例中,当满足预设回收条件时,还可以对所述口令进行回收;比如当口令对应的业务已经完成,或者口令的生命周期已结束,即可执行口令回收。其中,在回收口令时,可以释放所述口令的占用资源;或者,将所述口令记录至回收数据库。
在本实施例中,当检测到口令生成指令时,若判定所述回收数据库中存在剩余数据,则从所述回收数据库中选取对应于所述口令生成指令的口令。
由上述实施例可知,本申请通过生成口令生成序号,使得口令生成指令数值化,以便于口令生成;同时,通过对伪随机数和密码本的应用,确保生成的口令具有全局唯一性,保证了口令与业务之间的一一对应。
图4示出了根据本申请一示例性实施例的另一种口令生成方法的流程图,如图4所示,该方法应用于分布式系统中的每个服务器节点,可以包括以下步骤:
步骤402,检测到口令生成指令。
在本实施例中,结合“红包发放”的应用场景,对口令生成过程进行说明;当然,本申请显然还可以应用于其他基于“口令”的业务处理过程中,本申请不对此进行限制。
假定用户A希望发放“红包”,则用户A需要向服务端发起交互请求,以确定发放的“红包”数量、每个“红包”内的金额、发放形式等信息。基于接收到的交互请求,服务端确定需要为本次“红包”发放生成对应的口令,则向某台服务器节点发放口令生成指令,从而将口令生成任务分配至该服务器节点。
步骤404,判断回收数据库中是否存在剩余数据,若存在则转入步骤406,否则转入步骤408A和步骤408B。
步骤406,从回收数据库中选取口令。
在本实施例中,回收数据库用于保存生成、发放至用户并回收的口令,通过在回收数据库中选取口令,可以直接将其作为最终的口令并发放给用户,而无需重新生成,有助于提升响应效率、节省运算资源。
步骤408A,确定处理该口令生成指令的当前服务器节点对应的号段。
在本实施例中,每个服务器节点分别存在对应的一个或多个号段,这些号段被预先分配至每个服务器节点,或者由服务器节点在需要时从管理服务器处进行领取。由于每个号段同时只能被一个服务器节点使用,且不同号段之间不存在重叠,因此生成的自增ID也不会出现相同的情况,从而既能够利用分布式系统的高效处理能力,又能够确保自增ID以及对应的最终口令的全局唯一性。
步骤410A,在号段内生成自增ID,作为对应于该口令生成指令的口令生成序号。
在本实施例中,以号段[1,99]为例,则当前服务器节点对应于该号段的期间,首个接收到的口令生成指令对应于自增ID=1、第二个收到的口令生成指令对应于自增ID=2……最后一个接收到的口令生成指令对应于自增ID=99;当一个号段使用结束后,服务器节点可以使用其他已配置的号段,或向管理服务器申请其他未使用的号段。
步骤408B,确定当前服务器节点对应的口令类型。
在本实施例中,每个服务器节点采用的口令类型也可以预先配置,或者与号段一同向管理服务器进行申请和获取。其中,口令类型可以包括:字符数量和字符组合方式。其中,口令为字符串形式,字符数量即构成该字符串的字符个数,比如“0000”的字符数量为4、“adf94d”的字符数量为6;字符组合方式,即字符串的每位字符的类型,比如“所有字符均为数字”、“收尾字符为数字且其余字符为字母”等,其中每个字符可以为数字、字母、汉字、特殊符号等任意类型,本申请并不对此进行限制。
步骤410B,根据口令类型,确定对应的密码本。
步骤412,将自增ID转换为伪随机数。
在本实施例中,可以获取预定义的号段与处理函数之间的映射关系,选取应用于所述口令生成序号的处理函数;然后,根据所述处理函数对所述口令生成序号(即自增ID)进行处理,得到所述伪随机数。
其中,不同号段可以采用相同的处理函数,也可以采用不同的处理函数,以确保伪随机数的高随机性。需要说明的是,相关技术中用于生成伪随机数的处理函数,均可以应用于本申请的技术方案中,本申请并不对此进行限制。
作为一示例性实施例,比如处理函数为:对于任一自增ID,全部递增100;那么,以自增ID=1为例,即可得到对应的伪随机数为101。
步骤414,判断伪随机数的位数是否满足口令类型所需的字符位数,若满足则转入步骤418,否则转入步骤416。
步骤416,对伪随机数进行补位处理。
在本实施例中,以上述伪随机数101为例,假定口令类型所需的字符位数为4,则在伪随机数101的前面补充一位0,得到最终的伪随机数为0101。
步骤418,根据密码本对伪随机数进行转换,得到口令。
在本实施例中,每一密码本中包含伪随机数中对应的明文字符与所述字符组合方式中对应的密文字符之间的映射关系。比如当伪随机数为0101时,假定字符组合方式为“收尾为数字、其余为字母”,则该伪随机数0101至少对应于两个密码本,一个密码本中包含“数字(明文)→数字(密文)”的映射关系,另一个密码本中包含“数字(明文)→字母(密文)”的映射关系;作为一示例性实施例,表1示出了一示例性实施例的“数字(明文)→数字(密文)”密码本、表2示出了一示例性实施例的“数字(明文)→字母(密文)”密码本,则伪随机数0101可以相应地转换为9y9y。
表1
表2
表3
或者,即便密文字符的类型相同,也可以采用不同的密码本。比如作为一示例性实施例,若规定首位数字采用表1所示的密码本、末位数字采用表3所示的密码本、其余采用表2所示的密码本,则伪随机数0101可以相应地转换为9y92。
步骤420,判断是否达到对口令的回收条件,若达到则转入步骤422,否则返回。
在本实施例中,回收条件可以包括:对应的业务已完成(比如红包已发放完成)、口令的生命周期(比如5分钟)已结束等,可以根据实际需求进行设置。
步骤422,将口令回收至回收数据库中。
在本实施例中,除了将口令回收至数据库中,还可以对口令所占用的号段资源进行释放,以便对号段的再利用。
图5示出了根据本申请的一示例性实施例的电子设备的示意结构图。请参考图5,在硬件层面,该电子设备包括处理器、内部总线、网络接口、内存以及非易失性存储器,当然还可能包括其他业务所需要的硬件。处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成口令生成装置。当然,除了软件实现方式之外,本申请并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图6,在软件实施方式中,该口令生成装置可以包括序号生成单元、序号转换单元、密码本选取单元和口令生成单元。其中:
序号生成单元,当检测到口令生成指令时,生成对应于所述口令生成指令的口令生成序号;
序号转换单元,将所述口令生成序号转换为伪随机数;
密码本选取单元,根据为所述口令生成序号预配置的口令类型,选取对应的密码本;
口令生成单元,根据所述密码本对所述伪随机数进行转换,得到对应于所述口令生成指令的口令。
可选的,所述口令生成单元具体用于:
确定用于处理所述口令生成指令的分布式服务器节点;
在所述分布式服务器节点对应的号段内,按照检测到所述口令生成指令的顺序,通过自增序列生成所述口令生成序列;其中,不同分布式服务器节点对应于不同号段。
可选的,所述序号转换单元具体用于:
获取预定义的号段与处理函数之间的映射关系,选取应用于所述口令生成序号的处理函数;
根据所述处理函数对所述口令生成序号进行处理,得到所述伪随机数。
可选的,所述口令类型包括:字符数量和字符组合方式。
可选的,还包括:
补位处理单元,当所述伪随机数的位数小于所述字符数量时,对所述伪随机数进行补位,并根据所述密码本将补位后的伪随机数生成为所述口令。
可选的,所述密码本选取单元具体用于:
根据所述字符数量和所述字符组合方式,选取对应于所述伪随机数中的每一位字符的密码本,其中每一密码本中包含所述伪随机数中对应的明文字符与所述字符组合方式中对应的密文字符之间的映射关系;以及
所述根据所述密码本对所述伪随机数进行转换,包括:
依次确定所述伪随机数中的每一位字符对应的密码本,按照所述密码本中包含的所述映射关系,将所述伪随机数中的明文字符替换为对应的密文字符。
可选的,还包括:
口令回收单元,当满足预设回收条件时,对所述口令进行回收。
可选的,所述口令回收单元具体用于:
释放所述口令的占用资源;
或者,将所述口令记录至回收数据库。
可选的,还包括:
口令选取单元,当检测到口令生成指令时,若判定所述回收数据库中存在剩余数据,则从所述回收数据库中选取对应于所述口令生成指令的口令。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。