本发明实施例涉及信息安全技术领域,尤其涉及密码生成方法、校验方法、相应装置、系统及存储介质。
背景技术:
基于时间的一次性密码(time-basedone-timepassword,totp)算法是一种从共享密钥和当前时间计算一次性密码的算法。该算法的核心目标是在一定时间范围内,一端独自生成的密码,能够在对立端校验并通过。
现有技术基于totp算法生成的totp密码,在一定的时间范围内是相同的,即该时间范围内不同的用户获取的密码相同。当不同用户对同一电子设备利用该密码执行操作时,由于密码相同,导致后台无法对密码的使用者进行区分,进而影响对密码使用者的管控。例如,一个房间门锁,在一定时间范围内,不同的用户获取的门锁密码都是一致的,这样到底谁执行的开门操作,后台将无法区分。
技术实现要素:
本发明实施例提供一种密码生成方法、校验方法、相应装置、系统及存储介质,以更好的实现对密码的管控。
第一方面,本发明实施例提供一种密码生成方法,应用于密码生产端,包括:
获取预先设定的共享密钥和用户输入的密码生效时间;
根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。
可选的,所述根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,包括:
根据预设加密算法对所述共享密钥和密码生效时间加密,生成基础密码;
混合所述随机数和所述基础密码,得到对应所述用户的用户密码;
其中,所述随机数根据随机数生成规则生成。
第二方面,本发明实施例还提供一种密码校验方法,应用于密码校验端,包括:
获取预先设定的共享密钥和用户输入的用户密码,所述用户密码根据第一方面所述的密码生成方法生成;
根据所述用户的触发操作,确定所述用户触发校验的触发时间,所述触发时间对应的步长与密码生效时间对应的步长相同;
根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码;
根据所述校验密码对所述用户密码进行校验,确定校验结果。
可选的,所述根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码,包括:
根据预设加密算法对所述触发时间和共享密钥加密,生成第一设定长度的密码,作为校验密码。
可选的,所述根据所述校验密码对所述用户密码进行校验,确定校验结果,包括:
比对所述用户密码和校验密码;
如果所述校验密码的排列顺序与所述用户密码中基础密码的排列顺序一致,校验通过,否则,校验失败。
第三方面,本发明实施例还提供一种密码生成装置,应用于密码生产端,包括:
信息获取模块,用于获取预先设定的共享密钥和用户输入的密码生效时间;
用户密码生成模块,用于根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。
第四方面,本发明实施例还提供一种密码校验装置,应用于密码校验端,包括:
用户密码获取模块,用于获取预先设定的共享密钥和用户输入的用户密码,所述用户密码根据第一方面所述的密码生成方法生成;
触发时间确定模块,用于根据所述用户的触发操作,确定所述用户触发校验的触发时间,所述触发时间对应的步长与密码生效时间对应的步长相同;
校验密码生成模块,用于根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码;
校验模块,用于根据所述校验密码对所述用户密码进行校验,确定校验结果。
第五方面,本发明实施例还提供一种密码管理系统,包括:密码生产端和密码校验端;
所述密码生产端,用于根据获取的共享密钥和用户输入的密码生效时间,结合设定长度的随机数,生成用户密码;
所述密码校验端,用于根据所述用户触发校验的触发时间以及获取的共享密钥生成校验密码,并根据所述校验密码对所述用户输入的用户密码校验,确定校验结果。
第六方面,本发明实施例还提供一种存储介质,其上存储有计算机程序,该程序被密码生产端执行时实现如第一方面所述的密码生成方法。
第七方面,本发明实施例还提供一种存储介质,其上存储有计算机程序,该程序被密码校验端执行时实现如第二方面所述的密码校验方法。
本发明实施例提供一种密码生成方法、校验方法、相应装置、系统及存储介质,通过获取预先设定的共享密钥和用户输入的密码生效时间,根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。与现有技术相比,本发明实施例在生成用户密码的过程中引入了随机数,使得即使密码生效时间相同,生成的用户密码也不同,防止了同一时间不同用户得到的用户密码重复,使得用户密码更加可控。
附图说明
图1为本发明实施例一提供的一种密码生成方法的流程图;
图2为本发明实施例一提供的一种用户密码的生成过程示意图;
图3为本发明实施例二提供的一种密码校验方法的流程图;
图4为本发明实施例二提供的一种密码校验的过程示意图;
图5为本发明实施例三提供的一种密码生成装置的结构图;
图6为本发明实施例四提供的一种密码校验装置的结构图;
图7为本发明实施例五提供的一种密码管理系统的结构图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
实施例一
图1为本发明实施例一提供的一种密码生成方法的流程图,本实施例可适用于生成密码的情况,该方法可以由密码生成装置来执行,该装置可以通过软件和/或硬件的方式实现,并集成在密码生产端,其中,密码生产端可以根据实际应用场景确定,例如应用在门锁行业,密码生产端可以是服务器,应用在银行方面,密码生产端可以是u盾。具体的,参考图1,该方法包括如下步骤:
s110、获取预先设定的共享密钥和用户输入的密码生效时间。
共享密钥是密码生产端和密码校验端共同享有的密钥,共享密钥的形式和内容可以根据需求设定,实施例不进行限定。共享密钥预先存储在密码生产端和密码校验端,为密码的生成和校验提供依据。密码生效时间为密码生效的时间,具体可以根据用户的需求确定,例如,用户期望的密码生效时间是下午两点,为了预留充足的时间,防止密码失效,用户可以在下午两点之前输入密码生效时间,提前获取密码。可选的,用户可以直接在密码生产端输入密码生效时间,也可以通过用户端将密码生效时间发送至密码生产端。
s120、根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。
随机数是随机生成的一定个数的数值,可以利用随机函数或公式生成,实施例对随机数的个数不进行限定,其中,随机数的个数可以作为随机数的长度,例如产生的随机数有3个,则称随机数的长度为3。示例性的,可以通过如下公式生成随机数:
r[]=random(n)(1)
其中,r[]为随机数,n为随机数的个数,根据上述公式(1)即可生成n个随机数,n的大小可以根据实际需要确定。
用户密码为根据共享密钥、密码生效时间以及设定长度的随机数生成的密码,不同的用户对应的用户密码不同,由此可以根据用户密码实现对用户的管控。可选的,可以根据共享密钥和密码生效时间生成基础密码,然后将基础密码和随机数按照预先设定的混合规则混合,得到用户密码。其中,基础密码可以通过totp算法生成,通过加密算法对共享密钥和密码生效时间加密得到,对于不同的用户,如果获取的密码生效时间相同,生成的基础密码也相同。需要说明的是,totp算法以时间为依托,该时间根据密码生效时间以及预先设定的步长或精确度确定,例如密码生效时间为14时30分25秒,若精确度为分钟,相当于将秒抹除,若精确度为小时,相当于将分钟和秒抹除。以精确度为分钟为例,当密码生效时间为14时30分-14时30分59秒时,密码生产端基于密码生效时间和精确度得到的时间相同,结合共享密钥生成的密码也相同。
可见,不同用户输入的密码生效时间为14时30分-14时30分59秒时,得到的基础密码相同,如果以该基础密码作为用户最终的用户密码,当不同用户使用对应的用户密码时,后台无法确定用户密码对应的用户身份,以至于无法对用户进行有效的管控。为此本实施例引入随机数,随机数的加入使得即使基础密码相同,不同用户得到的用户密码也不相同。与现有技术相比,本实施例的技术方案在totp算法的基础上引入随机数,使得密码的发放和管控更加可控化,也实现了对用户的管控,可以根据用户密码对用户进行区分。实施例对加密算法以及混合规则不进行限定,例如加密算法可以采用hash算法,混合规则可以是随机混合,也可以是每隔一定数量的基础密码插入一个随机数。
用户密码生成后,可以将用户密码发送至用户对应的用户端,以使该用户通过用户端获取对应的用户密码,在密码生效时间使用。当用户使用用户密码时,即可根据用户密码确定该用户的身份,方便了对用户的管理。
本发明实施例一提供一种密码生成方法,通过获取预先设定的共享密钥和用户输入的密码生效时间,根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。与现有技术相比,本发明实施例在生成用户密码的过程中引入了随机数,使得即使密码生效时间相同,生成的用户密码也不同,防止了同一时间不同用户得到的用户密码重复,使得用户密码更加可控。
在上述实施例的基础上,可以通过如下方式生成对应用户的用户密码,可选的,s120包括:
根据预设加密算法对所述共享密钥和密码生效时间加密,生成基础密码;
混合所述随机数和所述基础密码,得到对应所述用户的用户密码;
其中,所述随机数根据随机数生成规则生成。
可选的,预设加密算法为hash算法,可以通过如下公式生成基础密码:
totp_basic=cut(hashsha1(k,t),l)(2)
其中,totp_basic为基础密码,hashsha1(k,t)为利用totp算法得到的密码,称为totp密码,加密算法采用的是hash算法,k为共享密钥,t为密码生效时间,l为基础密码的长度。可以理解的是,利用hash算法加密得到的密码较长,通常为32位,实际应用时,为了便于用户的使用,截取长度为l的密码作为基础密码,cut(hashsha1(k,t),l)表示截取长度为l的密码。利用公式(2)即可得到长度为l的基础密码。
混合随机数和基础密码,即可得到对应用户的用户密码,假定随机数的长度为n,基础密码的长度为l,则用户密码的长度为l+n。可选的,可以通过混合公式混合随机数和基础密码,得到用户密码:
totp=mix(totp_basic,r[])(3)
其中,totp为用户密码,根据基础密码和随机数,结合公式(3)即可得到用户密码。
示例性的,参考图2,图2为本发明实施例一提供的一种用户密码的生成过程示意图。密码生产端获取共享密钥和密码生效时间,在本地生成长度为l的基础密码,然后生成n个随机数,混合基础密码和随机数,得到用户密码。可选的,n=l/2,取整数,例如,l=5,则n=3。图2中不带斜线的为基础密12345,长度为5,带斜线的为随机数6、9、5,长度为3,基础密码和随机数混合得到的用户密码为12639455,长度为8。
实施例二
图3为本发明实施例二提供的一种密码校验方法的流程图,本实施例可适用于校验密码的情况,该方法可以由密码校验装置来执行,该装置可以通过软件和/或硬件的方式实现,并集成在密码校验端,其中,密码校验端校验的密码由上述实施例所述的密码生产端生成,密码校验端与密码生产端匹配,例如当应用于门锁行业,密码生产端为服务器时,密码校验端可以是门锁,当应用于银行方面,密码生产端为u盾时,密码校验端可以是服务器。需要说明的是,密码生产端和密码校验端之间不进行通信。具体的,参考图3,该方法包括如下步骤:
s210、获取预先设定的共享密钥和用户输入的用户密码。
其中,所述用户密码根据上述实施例所述的密码生成方法生成,具体的生成过程可以参考上述实施例,此处不再赘述。密码校验端存储的共享密钥和密码生产端存储的共享密钥相同。
s220、根据所述用户的触发操作,确定所述用户触发校验的触发时间。
其中,所述触发时间对应的步长与密码生效时间对应的步长相同。触发操作可以是“触摸”或“点击”等操作,用于触发密码校验端,使密码校验端对用户输入的用户密码进行校验。触发时间为触发操作对应的时间,当密码校验端检测到用户的触发操作时,将触发操作对应的时间确定为触发时间。触发时间的步长可以理解为是触发时间的精确度,该精确度与密码生效时间的精确度相同。
s230、根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码。
校验密码生成规则为生成校验密码的规则,可选的,校验密码生成规则为totp算法,即与密码生产端生成基础密码所对应的规则相同,以保证用户密码的验证成功。由于密码生产端和密码校验端的精确度相同,密码校验端根据用户的触发时间得到的用于生成校验密码的时间与密码生产端相同,例如密码生效时间和触发时间的精确度均为分钟,用户输入的密码生效时间为14时30分25秒,可以精确为14时30分,用户触发校验的触发时间为14时30分48秒,可以精确为14时30分,即两者对应的时间相同,由于两者的共享密码也相同,因此基于同一totp算法生成的校验密码和基础密码相同。
s240、根据所述校验密码对所述用户密码进行校验,确定校验结果。
可选的,可以将校验密码和用户密码进行匹配,根据校验密码和用户密码的排列顺序确定校验结果。例如,用户密码为13578620,其中,15760为基础密码,382为随机数,校验密码为15760,校验密码的排列顺序与用户密码中基础密码的排列顺序相同,则表示校验成功。
本发明实施例二提供一种密码校验方法,通过获取预先设定的共享密钥和用户输入的用户密码,根据所述用户的触发操作,确定所述用户触发校验的触发时间,根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码,根据所述校验密码对所述用户密码进行校验,确定校验结果。通过密码校验端自身生成的校验密码对用户输入的用户密码进行校验,实现了对用户的管控。
在上述实施例的基础上,可选的,s230包括:
根据预设加密算法对所述触发时间和共享密钥加密,生成第一设定长度的密码,作为校验密码。
校验密码的生成过程与用户密码的基础密码的生成过程类似,具体可以参考上述实施例,此处不再赘述。
在上述实施例的基础上,可选的,s240包括:
比对所述用户密码和校验密码;
如果所述校验密码的排列顺序与所述用户密码中基础密码的排列顺序一致,校验通过,否则,校验失败。
由于用户密码中增加了随机数,校验密码的长度小于用户密码的长度,只需比较校验密码的顺序和用户密码中基础密码的排列顺序,根据比较结果确定校验结果。具体的,当校验密码的顺序和用户密码中基础密码的排列顺序一致时,校验通过,否则,校验失败。
示例性的,参考图4,图4为本发明实施例二提供的一种密码校验的过程示意图。密码校验端根据用户的操作获取待校验的用户密码以及对应的触发时间,根据触发时间结合共享密钥在本地生成校验密码,然后循环比对校验密码和用户密码,确定校验结果。如图4所示,带有斜线的6、9、5为随机数,校验密码12345与用户密码12639455中的基础密码12345的顺序一致,则校验成功。
实施例三
图5为本发明实施例三提供的一种密码生成装置的结构图,该装置可以执行上述实施例一所述的密码生成方法,具体的,该装置包括:
信息获取模块310,用于获取预先设定的共享密钥和用户输入的密码生效时间;
用户密码生成模块320,用于根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。
本发明实施例三提供一种密码生成装置,通过获取预先设定的共享密钥和用户输入的密码生效时间,根据所述共享密钥和密码生效时间,结合设定长度的随机数,生成对应所述用户的用户密码,并将所述用户密码发送至所述用户的用户端,以使所述用户获取所述用户密码。与现有技术相比,本发明实施例在生成用户密码的过程中引入了随机数,使得即使密码生效时间相同,生成的用户密码也不同,防止了同一时间不同用户得到的用户密码重复,使得用户密码更加可控。
在上述实施例的基础上,用户密码生成模块320,具体用于:
根据预设加密算法对所述共享密钥和密码生效时间加密,生成基础密码;
混合所述随机数和所述基础密码,得到对应所述用户的用户密码;
其中,所述随机数根据随机数生成规则生成。
本发明实施例三提供的密码生成装置可以执行上述实施例所述的密码生成方法,具备相应的功能和有益效果。
实施例四
图6为本发明实施例四提供的一种密码校验装置的结构图,该装置可以执行上述实施例二所述的密码校验方法,具体的,该装置包括:
用户密码获取模块410,用于获取预先设定的共享密钥和用户输入的用户密码,所述用户密码根据上述实施例一所述的密码生成方法生成;
触发时间确定模块420,用于根据所述用户的触发操作,确定所述用户触发校验的触发时间,所述触发时间对应的步长与密码生效时间对应的步长相同;
校验密码生成模块430,用于根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码;
校验模块440,用于根据所述校验密码对所述用户密码进行校验,确定校验结果。
本发明实施例四提供一种密码校验装置,通过获取预先设定的共享密钥和用户输入的用户密码,根据所述用户的触发操作,确定所述用户触发校验的触发时间,根据所述触发时间和共享密钥,结合校验密码生成规则,生成校验密码,根据所述校验密码对所述用户密码进行校验,确定校验结果。通过密码校验端自身生成的校验密码对用户输入的用户密码进行校验,实现了对用户的管控。
在上述实施例的基础上,校验密码生成模块430,具体用于:
根据预设加密算法对所述触发时间和共享密钥加密,生成第一设定长度的密码,作为校验密码。
在上述实施例的基础上,校验模块440,具体用于:
比对所述用户密码和校验密码;
如果所述校验密码的排列顺序与所述用户密码中基础密码的排列顺序一致,校验通过,否则,校验失败。
本发明实施例四提供的密码校验装置可以执行上述实施例所述的密码校验方法,具备相应的功能和有益效果。
实施例五
图7为本发明实施例五提供的一种密码管理系统的结构图,该系统密码管理系统1包括:密码生产端510和密码校验端520,其中,密码生产端510,用于根据获取的共享密钥和用户输入的密码生效时间,结合设定长度的随机数,生成用户密码。密码校验端520,用于根据所述用户触发校验的触发时间以及获取的共享密钥生成校验密码,并根据所述校验密码对所述用户输入的用户密码校验,确定校验结果。
本发明实施例五提供的密码管理系统与上述实施例提供的密码生成方法和密码校验方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例具备执行密码生成方法和密码校验方法相同的有益效果。
实施例六
本发明实施例六还提供一种存储介质,其上存储有计算机程序,该程序被密码生产端执行时实现如本发明上述实施例所述的密码生成方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的密码生成方法中的操作,还可以执行本发明任意实施例所提供的密码生成方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明上述实施例所述的密码生成方法。
实施例七
本发明实施例七还提供一种存储介质,其上存储有计算机程序,该程序被密码校验端执行时实现如本发明上述实施例所述的密码校验方法。
当然,本发明实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的密码校验方法中的操作,还可以执行本发明任意实施例所提供的密码校验方法中的相关操作,且具备相应的功能和有益效果。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、闪存(flash)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是机器人,个人计算机,服务器,或者网络设备等)执行本发明上述实施例所述的密码校验方法。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。