一种短动码的实现方法及其应用转让专利

申请号 : CN201310391105.X

文献号 : CN103425797B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汪德嘉

申请人 : 北京通付盾科技有限公司

摘要 :

本发明揭示了短动码的实现方法及其应用,该实现方法基于分布式存储的数据库并涉及具相对数位长度差异的长数串和短数串,它包括将长数串映射短数串的短码化步骤和将短数串回找长数串的返码化步骤,两步骤中短数串在一定时段内有效。通过对数据库中的记录存储加入时间戳,并进行是否超出失效时间的判断,精确生成短动码的映射关系。应用本发明实现方法,通过设计失效时间,并在一端时效内将长数串与动态滚动切换、相对较短的数串建立映射对应关系,从而通过短动码提高了账号的便于记忆性和安全实用性,并且通过引入时间戳充分发挥了分布式存储的数据库数据容灾、系统规模的优点,提升了短动码精度。

权利要求 :

1.一种短动码的实现方法,涉及具有相对数位长度差异的长数串和短数串,其特征在于:所述实现方法基于分布式存储的数据库,包括将长数串通过计算转为短数串的短码化步骤和将短数串通过访问数据库返回长数串的返码化步骤,两步骤中短数串在一定时段内有效,其中短码化步骤包括S1~S2:S1、初始化数据库的环境并建立访问数据库的连接,设置映射位数、失效时间和冲突解决步长因子;

S2、根据冲突解决步长因子对长数串做模操作得到初始短数串,并在数据库中查询初始短数串存在与否,具体包括S21~S23:S21、若初始短数串未存在于数据库中,将初始短数串和时间戳存入数据库并将初始短数串返回;

S22、若初始短数串存在于数据库中,提取数据库中对应初始短数串的时间戳,判断存入时间超出失效时间与否,若在失效时间以内则重新生成新的初始短数串;

S23、若存入时间超出失效时间则删除数据库中初始短数串及其时间戳,将步骤S2得到的初始短数串和时间戳存入数据库并将初始短数串返回;

返码化步骤包括S3:在数据库中查询短数串,并依据失效时间和短数串所对应数据库中记录的时间戳判断过期与否,对于未过期的短数串,则通过数据库存储的步骤S2所做模操作的反运算获得长数串并返回相关联的长数串。

2.根据权利要求1所述短动码的实现方法,其特征在于:步骤S1中设置映射位数具体是指:将长数串设定为17位数,将短数串设定为6位数,失效时间为用户自定义时间。

3.根据权利要求1所述短动码的实现方法,其特征在于:步骤S2中,在做模操作得到初始短数串后加入验证因子,返码化步骤中,在数据库中查询短数串前通过检验短数串的验证因子进行合法性判断,仅将合法的短数串参与数据库查询。

4.根据权利要求1所述短动码的实现方法,其特征在于:所述短动码至少用于移动支付交易、门禁、免费自行车取放、公共场所储物箱或车门锁。

说明书 :

一种短动码的实现方法及其应用

技术领域

[0001] 本发明涉及一种移动动态码位数变换技术,综合利用后台分布式存储的数据库交互实现一定时段内有效且将长数串映射到短数串,并以一定频率滚动切换,具体涉及一种短动码的实现方法及其具体应用。

背景技术

[0002] 现有各种与用户身份具有唯一性关联的账户,大都具有17位以上的数值串,有些甚至长至20多位。随着移动通讯技术的发展和应用不断扩展,此类账户大都与移动终端相关联,在各种应用场景下广泛被应用。
[0003] 在实际应用中,常常需要出示或输入该类长数串,一方面如此长数串不便于记忆,常会因为无法记起准确数串而影响应用业务的正常进行;另一方面该长数串缺乏修饰,存在安全隐患,一旦泄漏被不法分子利用后果不堪设想。为此,需要一种动态短数串来与该长数串匹配,且该匹配需要在一定时段内有效、以一定频率滚动切换、精度可提升至ms级别。

发明内容

[0004] 本发明针对上述如此多的匹配要求,提出了一种短动码的实现方法及其应用,以期解决长数串型账号在移动支付等领域不便于记忆、缺乏安全性的问题。所谓短动码,它是一种数位相
[0005] 本发明的上述第一个目的一种短动码的实现方法,其实现方法基于分布式存储的数据库并涉及具相对数位长度差异的长数串和短数串,其特征在于:该实现方法包括将长数串通过计算转为短数串的短码化步骤和将短数串通过访问数据库返回长数串的返码化步骤,两步骤中短数串在一定时段内有效,其中:
[0006] 短码化步骤S1,初始化数据库的环境并建立访问数据库的连接,设置映射位数、失效时间和冲突解决步长因子;S2,根据冲突解决步长因子对长数串做模操作得到初始短数串,并在数据库中查询初始短数串存在与否;S21,初始短数串未存在于数据库中,将初始短数串和时间戳存入数据库并将初始短数串返回;S22,初始短数串存在于数据库中,提取初始短数串所对应数据库中记录的时间戳,判断存入时间超出失效时间与否,若在失效时间以内则返回S2重新生成新的初始短数串;S23,若存入时间超出失效时间则删除数据库中记录及其时间戳,将初始短数串和时间戳存入数据库并将初始短数串返回;
[0007] 返码化步骤S3,在数据库中查询短数串,并依据失效时间和短数串所对应数据库中记录的时间戳判断过期与否,对于未过期的短数串,则通过数据库存储的步骤S2所做模操作的反运算获得长数串并返回相关联的长数串。
[0008] 进一步地,步骤S1中设置映射位数为将长数串设定为17位数,将短数串设定为6位数,失效时间为用户自定义时间。
[0009] 进一步地,短码化步骤S2中,在做模操作得到初始短数串后加入验证因子,返码化步骤S3中,在数据库中查询短数串前通过检验短数串的验证因子进行合法性判断,仅将合法的短数串参与数据库查询。
[0010] 本发明的上述第二个目的一种短动码的应用,其技术方案为:所述短动码至少用于移动支付交易、门禁、免费自行车取放、公共场所储物箱或车门锁。
[0011] 应用本发明短动码的技术方案:该实现方法设计失效时间,并在一段时效内将长数串与动态滚动切换、相对较短的数串建立映射对应关系,从而通过短动码提高了账号的便于记忆性和安全实用性,并且通过引入时间戳充分发挥了分布式存储的数据库数据容灾、系统规模的优点,提升了短动码精度。

附图说明

[0012] 图1为本发明短码化步骤的核心流程示意图。
[0013] 图2为本发明返码化步骤的核心流程示意图。
[0014] 图3为本发明一优选实施例的短码化步骤的详细流程示意图。
[0015] 图4为图3所示实施例的返码化步骤的详细流程示意图。
[0016] 图5为图3所示实施例生成6位数的个数与平均花费时间的关系示意图。

具体实施方式

[0017] 本发明为应对移动支付及其它长数串账号应用安全的挑战,创新提出了一种短动码的实现方法,也强调了该短动码的应用多样性。该技术方案能让人们无需记忆长达10数位的长数串账号或密码,取而代之以动态滚动切换到短密码,从而为用户账户使用提供便于记忆且安全性较高的技术解决方案。
[0018] 本发明理论上适用于任何具相对数位长度差异的长数串和短数串,例如5位数相对2位数而言为长数串,而相对18位数而言为短数串,
[0019] 概括来看其方案包括将长数串通过计算转为短数串的短码化步骤和将短数串通过访问数据库返回长数串的返码化步骤,两步骤中短数串在一定时段内有效,如图1和图2所示。
[0020] 短码化步骤中如图1所示,S1初始化数据库的环境并建立访问数据库的连接,设置映射位数、失效时间和冲突解决步长因子;S2根据冲突解决步长因子对长数串做模操作得到初始短数串,并在数据库中查询初始短数串存在与否;S21初始短数串未存在于数据库中,将初始短数串和时间戳存入数据库并将初始短数串返回;S22初始短数串存在于数据库中,提取初始短数串所对应数据库中记录的时间戳,判断存入时间超出失效时间与否,若在失效时间以内则返回S2重新生成新的初始短数串;S23若存入时间超出失效时间则删除数据库中记录及其时间戳,将初始短数串和时间戳存入数据库并将初始短数串返回;
[0021] 返码化步骤中如图2所示,S3在数据库中查询短数串,并依据失效时间和短数串所对应数据库中记录的时间戳判断过期与否,对于未过期的短数串,则通过数据库存储的步骤S2所做模操作的反运算获得长数串并返回相关联的长数串。
[0022] 为便于深入理解,以下便以17位数和6位数间的映射关系实现短动码实施例为说明。
[0023] 基于基于分布式存储的服务器和通讯网络,本发明实现方法具有以下几方面的设计需求:1)、将17位数映射到6位数,2)、从6位数反过来找到17位数,3)该过程在某一段时间内有效,4)、从6位数找17位数开始时,需要验证该6位数的合理性。
[0024] 在本发明在设计过程中,考虑过三种实现框架,分别为MongoDB,Hbase和Memcached。其中MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。HBase是一个分布式的、面向列的开源数据库,该技术来源于Chang et al所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。Memcached是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。
[0025] 经过试验后发现:从6位数的生成速度考虑Hbase>Memcached>MongoDB;从失效时间的精确度考虑Memcached>Hbase>MongoDB;从系统的稳定性考虑MongoDB>Hbase>Memcached;从系统规模考虑Memcached>MongoDB>Hbase。
[0026] 由于Hbase基于Hadoop集群,故基于Hbase实现Number-Map是一个重量级的工具。如果Hadoop集群上有其它的任务要运行,那么集群的负担将比较重。Memcached是一个轻量级的架构,基于Memcached的Number-Map在提供服务时比较轻便,但是其一个致命的弱点就是数据很难备份,一但数据丢失将无法恢复,这对于提供安全服务来说是致命的。
[0027] MongoDB也是一个分布式数据库,具有很好的数据容灾性。从系统规模来说介于Memcached和Hbase之间。MongoDB对失效时间的支持没有前两者好,误差在min量级(Hbase是s级,Memcached是ms级)。尤其在MongoDB集群上,设置的失效时间和实际失效时间没有直接关系,故不能利用MongoDB自带的expire-time机制实现Number-Map。
[0028] 但是为了充分利用MongoDB集群的优点(主要表现在数据容灾,系统规模),最大化地弥补其不足,本发明设计了利用时间戳差值的方法替代了MongoDB失效时间误差较大的方案,该方法解决了失效时间问题,可将精确度提高到ms级。以下分别从两方面流程示意图来理解奔赴买那个的具体实现。
[0029] 如图3所示,是本发明一优选实施例的短码化步骤的详细流程示意图。从图示可见开始时需要初始化数据库的环境,主要做的是清除表中的内容并建立数据库长连接,同时设置映射位数、失效时间和冲突解决步长因子。数据库以Json结构存储数据,没有严格意义上的key-value之分,通过对某一个属性建立索引后,通过该索引可以快速获得value值和相应Json所有数据。这个与Hbase有很大的不一样,Hbase是严格意义上的key-vlaue数据库,默认对key建立了索引,数据库的索引需要自己建立,索引有多个格式,但是每一个属性只能有一个索引。
[0030] 初始化环境建立后,为了获得质量比较高的随机种子,直接利用17位数通过预设的冲突解决步长因子对其做模操作得到初始的6位数。为了使该6位数可验证,系统加入了验证算法,验证算法主要是为了防止欺诈者滥用攻击。可用的验证算法具有多样性,现有技术任何用于数据验证的数据处理方式均可适用,故不再举例说明。之后,查询数据库,检查初始的6位数是否存在数据库中。如果不存在,说明该数据还没有被利用,此种情况只可能在服务之初出现;否则,说明数据已经被用过。被用过的数据需要继续判断其是否已经失效,先取出对应的时间戳,该时间戳是在前一次产生该6位数时系统打上的时间戳。然后计算该值与当前时间差的绝对值,如果该值超过设置的失效时间说明此6位数可以被再次利用,否则需要重新生成新的6位数。按照流程重新检查其是否可用,最后返回这个6位数。对于每次返回的6位数,均需要连同其时间戳存储数据库。对于能够被再次利用的6位数,需要删除数据库中已有记录及其时间戳,将该6位数连同其时间戳再次存入数据库。
[0031] 如图4所示,是本发明优选实施例返码化步骤的详细流程示意图。从图示可见,该实现方法步骤的开始是不到数据库中获取对应的17位数的,而是先通过校验6位数的验证因子检验其是否合法,如果不合法系统直接返回。这一步非常关键,否则欺诈者多次滥用6位数获得一个合法的17位数,将会给商户造成损失。只有合法的6位数才有资格到数据库获得17位数。而且数据库会根据数据查询返回结果。如果合法的6位数使用期限已经超过过期时间,或返回则6位数不存在;否则,通过数据库存储的步骤S2所做模操作的反运算获得17位数并返回。
[0032] 从MongoDB测试结果和API调用来看:如下表所示:其中T=15,000s,在表中共测试302万次、采用200个线程、测试跨越4个周期、详细的记录了3个周期的统计数据。在第1个周期内,因为开始6位数均没有被用过,故生成速度较快。在到达失效时间进入第2个周期后,系统会继续生成有效的6位数,被选6位数的来源主要有前一次没有用到的和已经失效的数字,以此类推
[0033]。
[0034] 如图5所示,是利用本发明实现方法生成6位数的个数与平均花费时间的关系示意图。从图示可见,开始平均花费时间很快,后来很慢(在未达到失效时间之前)。过了失效时间,又变得很快。在周期T内作阻尼运动,最后达到平衡状态。平均生成一个6位预约码大约为17ms。
[0035] 以上是本发明实现方法和实例效果方面的详细展示,以下再从该短动码的应用多样性来看:该短动码可以用于移动支付交易,将相关的账号信息转变为一小串短码供用户记忆或展示呈现,这样既便于使用又能切实保障用户身份唯一性识别的账号的安全性。它也可以用于门禁系统、免费自行车锁具、公共场所储物箱或车门锁等。基于上述实现方法,用户可以轻松获取一段时间内有效的短码进行门禁解禁通过、免费自行车取放、公共场所物品寄存,或者汽车车门开闭。这里公共场所至少包括“机场、火车站、大型仓储式超市、游泳馆”等需要包裹临时寄存的场所,而且传统用于此类应用的条码凭条等极易发生丢失、过期失效或重码滥用的情况,运用本发明的短动码,这些问题都将得到有效解决。
[0036] 当然,除上述实施例外,本发明还可以有其它更为广泛的实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明所要求保护的范围之内。可以理解到的是:应用本发明短动码的技术方案:通过设计失效时间,并在一段时效内将长数串与动态滚动切换、相对较短的数串建立映射对应关系,从而通过短动码提高了账号的便于记忆性和安全实用性,并且通过引入时间戳充分发挥了分布式存储的数据库数据容灾、系统规模的优点,提升了短动码精度。