一种令牌的验证方法、令牌终端及令牌服务器
技术领域
本申请涉及网络数据安全领域,特别涉及一种令牌的验证的方法、令牌终端及令牌服务器。
背景技术
随着网络数据安全领域的不断发展,令牌作为最安全的身份验证技术之一,已经被越来越多的行业应用。
一般而言,用户登录系统时需要输入用户名、密码、令牌等,三个内容同时输入正确则登录成功。三个内容中有任何一个输错,则可能导致登陆失败。登录失败后,输入过的令牌可能会作废。例如,操作人员登录系统时输入的用户名、密码和令牌三个内容中,密码输入错误,则服务器无法通过该用户的登录验证;这时,本次登录用到的令牌一般也会被作废。
现有技术中,令牌的生成方式一般是每隔固定时间间隔生成固定长度的令牌。其中固定时间间隔例如可以是一分钟或者两分分钟。这样,每隔一分钟或两分钟可以生成一个新的令牌。这样,上述例子中,本次登录用到的令牌作废后,用户只能等待一定的时间,在得到新生成的令牌后,才能再次尝试登陆。
一方面,现有技术中,理论上可以缩短令牌的生成时间,比如缩短至10秒或者5秒。但是,这种方式显示生产令牌的时间较短;服务器可能还没有接收到用户输入的令牌,当前令牌已经过期作废,不方便操作。
另一方面,现有技术中一般生成的令牌之间无任何关联性,即每一次生成令牌中的每一位都是随机生成的。这样,对于较短时间间隔生成新的令牌的情况,会比较耗费服务器和令牌终端的计算资源;同时,由于每一次生成的令牌中的每一位都可能是全新的,也不利于用户对令牌的记忆。
发明内容
本申请实施例的目的是提供一种令牌的验证方法、令牌终端及令牌服务器,用以解决现有技术中存在的问题。
为解决上述技术问题,本申请实施例提供的令牌的验证方法、令牌终端及令牌服务器是这样实现的:
一种令牌的验证方法,包括:
令牌终端按照预设算法,每隔预定时间间隔生成m位第一字符,并将生成的第一字符插置于第一令牌的一端,去除另一端的m位;显示该调整后的第一令牌;
第一终端将用户根据所述令牌终端上的第一令牌输入的验证令牌发送至令牌服务器;
令牌服务器接收所述验证令牌,并判断所述验证令牌是否包含于接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的第二令牌的集合,如果是,则通过第一终端的验证;其中,所述令牌服务器按照与所述令牌终端相同的算法且每隔所述预设时间间隔生成m位第一字符,将生成的第一字符并插置于所述第二令牌的一端,去除另一端的m位字符。
一种令牌的验证方法,包括:
令牌终端按照预设算法,每隔预定时间间隔生成m位第一字符,并将生成的第一字符插置于第一令牌的一端,去除另一端的m位;显示该调整后的第一令牌;
第一终端将用户根据所述令牌终端上的第一令牌输入的验证令牌发送至令牌服务器;
令牌服务器接收所述验证令牌,并判断所述验证令牌是否为接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的任一第二令牌的子序列,如果是,则通过第一终端的验证;其中,所述令牌服务器按照与所述令牌终端相同的算法且每隔所述预设时间间隔生成所述m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位字符。
一种令牌的生成方法,包括:
令牌终端按照预设算法,每隔预定时间间隔生成m位第一字符,并将生成的第一字符插置于第一令牌的一端,去除另一端的m位字符;
显示该调整后的第一令牌。
一种令牌的验证方法,包括:
令牌服务器接收第一终端发送的验证令牌;
令牌服务器判断所述验证令牌是否包含于接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的第二令牌的集合;如果是,则通过第一终端的验证;其中,所述令牌服务器每隔所述预设时间间隔生成所述m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位。
一种令牌的验证方法,包括:
令牌服务器接收第一终端发送的验证令牌;
令牌服务器判断所述验证令牌是否为接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的任一第二令牌的子序列,如果是,则通过第一终端的验证;其中,所述令牌服务器每隔所述预设时间间隔生成所述m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位。
一种令牌终端,包括:
生成模块,用于按照预设算法每隔预定时间间隔生成m位第一字符,并将生成的字符插置于第一令牌一端,去除另一端的m位;
显示模块,用于显示所述生成模块调整后的第一令牌。
一种令牌服务器,包括:
接收模块,用于接收第一终端发送的验证令牌;
生成模块,用于每隔所述预设时间间隔生成m位第一字符,并将生成的第一字符插置于所述第二令牌的所述预设一端,去除另一端的m位;
验证模块,用于判断所述验证令牌是否包含于接收到该验证令牌之前的第一预设时长内所述生成模块生成的第二令牌的集合,如果是,则通过第一终端的验证。
一种令牌服务器,包括:
接收模块,用于接收第一终端发送的验证令牌;
生成模块,用于每隔所述预设时间间隔生成m位第一字符,并将生成的第一字符插置于所述第二令牌的所述预设一端,去除另一端的m位;
验证模块,用于判断所述验证令牌是否为接收到该验证令牌之前的第一预设时长内所述生成模块生成的任一第二令牌的子序列,如果是,则通过第一终端的验证。
由以上本申请各实施例,可以生成较少位数的字符以生成新的第一令牌,从而节约令牌终端和令牌服务器的计算资源,也便于用户记忆令牌和输入令牌,从而提高用户感受。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例中令牌终端和令牌服务器的示意图;
图2为本申请令牌验证方法一实施例的流程图;
图3为本申请令牌验证方法一实施例的流程图;
图4为本申请令牌验证方法一实施例的流程图;
图5本申请令牌验证方法一实施例的流程图;
图6为本申令牌终端一实施例的模块图;
图7为本申令牌服务器一实施例的模块图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
现有技术中来,令牌生成可能需要等待半分钟或者一分钟,令牌一旦被使用失效后,用户都需花时间去等待新的令牌生成,本申请提供一种解决前述问题的令牌生成与验证的方法,以下结合附图详细描述本方法。
图1为本申请实施例中令牌终端100和令牌服务器200的示意图。
令牌终端100和令牌服务器200可以通过网络/硬件接口连接,或者不经过网络/硬件接口连接。
在两者不连接的情况下,令牌终端100和令牌服务器200可以具有相同的生成因子和时钟。基于相同的生成因子,令牌终端100和令牌服务器200可以各自生成密钥。生成密钥的方式可以是关于时间的相同算法。由于可以具有相同的时钟,并且基于相同的生成因子,令牌终端100和令牌服务器200可以确保在同一时间生成的令牌相同。
在两者可以连接的情况下,令牌终端100可以通过连接接收令牌服务器200发出的生成因子。基于接收到的生成因子,令牌终端100可以得到令牌。一种方式可以是生成因子即为令牌;其它方式中,生成因子可以不同于令牌,而是作为生成令牌的算法的一种因子。后者的情况下,令牌终端100通过预设算法并基于接收到的生成因子可以生成令牌,并且该生成的令牌可以与令牌服务器200中同一时刻存有的令牌相同。
在使用令牌进行验证时,用户可以查看令牌终端100显示的当前动态令牌,将该动态令牌输入至需要验证的应用上的输入框或网页上的输入框中,这样的应用或网页可以安装于第一终端上,该第一终端也可以在物理上与令牌终端100为一体,也可以非一体;进一步的,一般第一终端可以将从输入框接收到的动态令牌发送至令牌服务器200;令牌服务器200验证接收到的动态令牌是否与本地存储的令牌匹配,以完成令牌的验证。
图2为本申请一实施例中令牌验证的过程,该方法包括如下步骤。
S210:令牌终端100按照预设算法,每隔预定时间间隔生成m位第一字符,并将生成的第一字符插置于第一令牌的一端,去除另一端的m位字符;显示该调整后的第一令牌。
所述第一令牌是令牌终端100按照预设算法,每隔预定时间间隔生成m位第一字符。假设m=1,则在预定的时间间隔为5秒的情况下,从12:00:05开始,每隔预定时间间隔生成的第一字符如下表:
表1
生成时间 |
第一字符 |
12:00:05 |
5 |
12:00:10 |
2 |
12:00:15 |
3 |
12:00:20 |
4 |
12:00:25 |
6 |
12:00:30 |
7 |
设第一令牌的长度为6位字符,起始时的第一令牌为857245。形成的令牌如下表:
表2
生成时间 |
第一字符 |
第一令牌 |
12:00:05 |
5 |
572455 |
12:00:10 |
2 |
724552 |
12:00:15 |
3 |
245523 |
12:00:20 |
4 |
455234 |
12:00:25 |
6 |
552346 |
12:00:30 |
7 |
523467 |
如上面表2的例子,在实际的令牌终端上产生的显示效果,可以是第一令牌的自右向左滚动。滚动过程中,不断有新生成的一位字符填补到滚入的一端,同时有一位字符在另一端滚出,而令牌长度保持6位不变。
当然,m的值也可以为2或3等。
例如m=2的情形,如下表:
表3
生成时间 |
第一字符 |
第一令牌 |
12:00:05 |
52 |
724552 |
12:00:10 |
34 |
455234 |
12:00:15 |
67 |
552367 |
12:00:20 |
84 |
236784 |
12:00:25 |
21 |
678421 |
如上面表3的例子,在实际的令牌终端上产生的显示效果,可以是第一令牌的自右向左滚动。滚动过程中,不断有新生成的2位字符填补到滚入的一端,同时有2位字符在另一端滚出,而令牌长度保持6位不变。
本领域技术人员容易从上述例子得到m等于其他取值的情况,这里不再赘述。需要说明的是,m的取值可以是小于令牌长度的正整数。
令牌终端100按照预设算法,可以基于起始因子每隔预定时间间隔生成第一字符。
所述起始因子,可以是预置在令牌终端100中的一组数据,也可以是从令牌服务器200接收到的一组数据。基于该起始因子,可以生成第一字符。
所述预设算法,可以是将起始因子按照预设的一种映射规则映射为另一数据。
例如,起始因子一般可以为32位(二进制表示)或以上。预设算法较多的可以采用线性反馈移位寄存算法(Linear feedback shiftregister,LFSR)。相同的起始因子,按照相同的LFSR算法,每完成一次移位,可以得到相同的结果。利用起始因子,可以生成长度为(2^32-1)的不重复二进制随机数序列。按照一定的规则,例如转换成10进制后的最后数位,可以作为第一字符。当然,也可以是转换为16进制后的最后数位作为第一字符。例如,基于相同的起始因子,令牌终端100在第一次生成第一字符时(例如按照LFSR算法完成第一次移位时)令牌服务器200也在第一次生成第一字符(同样按照LFSR算法完成第一次移位时)。也就是说,令牌终端100和令牌服务器200各自第一次分别生成的第一字符相同。类似的,令牌终端100和令牌服务器200各自第N次分别生成的第一字符也相同。
上述基于同一起始因子可以按照固定的时间间隔生成第一字符。例如每隔10秒,令牌终端100按照预设算法和起始因子可以生成1位新的数字作为第一字符。
令牌终端100和令牌服务器200可以通过相同的预设算法和起始因子,保持分别生成第n次第一字符时令牌终端100生成的第n个第一字符和令牌服务器200生成的第n个第一字符相同。通过在令牌终端100内置精确度高和/或与令牌服务器200进行时间同步的时钟,确保令牌终端100和令牌服务器200保持时间同步。在时间保持同步的情况下,可以使得令牌终端100和令牌服务器200在相同时刻生成第n个第一字符。这样,每间隔相同的时间间隔后,令牌终端100和令牌服务器200同时生成新的第一字符,且令牌终端100和令牌服务器200分别生成第一字符相同。
S220:第一终端接收输入的验证令牌,并将验证令牌发送至令牌服务器。
第一终端的网页或者应用上的令牌输入框可以提示用户输入指定位数的验证令牌。进而第一终端可以接收输入的验证令牌。
S230:令牌服务器200接收所述验证令牌,并判断所述验证令牌是否包含于接收到该验证令牌之前的第一预设时长内所述令牌服务器200生成的第二令牌集合;如果是,则通过第一终端的验证;所述令牌服务器按照与所述令牌终端相同的算法且每隔所述预定时间间隔生成m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位。
例如,参照图2,令牌服务器200按照预设时间间隔5秒生成与令牌终端相同的第一字符,并与令牌终端相同,将生成的第一字符插置于所述第二令牌的一端,去除另一端的1位。
假设第一预设时长为13秒,如果令牌服务器200在12:00:16接收到第一终端发来的验证令牌为572455,该验证令牌为12:00:03-12:00:16生成的第二令牌集合{572455,724552,245523}中的一个,即等于其中第1个;这样,令牌服务器200可以通过第一终端的验证。
通过本申请上述实施例,可以生成较少位数的字符以生成新的第一令牌,从而节约令牌终端和令牌服务器的计算资源。
通过第一终端的验证后,令牌服务器200还可以将接收到所述验证令牌之前的第一预设时长内所述令牌服务器200生成的令牌设置为失效。
例如表2所示,收到的验证令牌为245523,接收时间为12:00:16,在验证完成后,可以将12:00:03-12:00:16之间生成的所有第一令牌设置为失效。这样,后续即使利用12:00:03-12:00:16之间生成的令牌进行验证也无法通过。
通过上述实施例,可以在验证后及时作废已经使用过的令牌以保证令牌使用的安全性。
以下介绍本申请令牌验证方法的一个实施例,如图3所述,包括如下步骤。
S310:令牌终端按照预设算法,每隔预定时间间隔生成m位第一字符,并将生成的第一字符插置于第一令牌的一端,去除另一端的m位字符;显示该调整后的第一令牌。
S320:第一终端将用户根据所述令牌终端上的第一令牌输入的验证令牌发送至令牌服务器。
本实施例中,用户输入的验证令牌长度可以由第一终端的网页或者应用指定,例如,在登陆某视频应用APP时,对安全性的要求并不是很高,APP可以指定用户输入四位数的验证令牌就可以。
例如,第一令牌为123456,网页输入框要求输入的验证令牌长度为4位,用户可以随意读取第一令牌中连续的4位数字作为验证令牌输入,可以是1234,2345,3456。
S330:令牌服务器200接收所述验证令牌,并判断所述验证令牌是否为接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的任一第二令牌的子序列,如果是,则通过第一终端的验证;其中,所述令牌服务器按照与所述令牌终端相同的算法且每隔所述预设时间间隔生成所述m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位字符。
例如,参照图2,令牌服务器200按照预设时间间隔5秒生成与令牌终端相同的第一字符,并与令牌终端相同,将生成的第一字符插置于所述第二令牌的一端,去除另一端的1位。
假设第一预设时长为13秒,如果令牌服务器200在12:00:16接收到第一终端发来的验证令牌为2455,该验证令牌为12:00:03-12:00:16生成的第二令牌集合{572455,724552,245523}中的第一个的子序列,即等于第1个的后四位;这样,令牌服务器200可以通过第一终端的验证。
通过本申请上述实施例,第一终端可以指定用户输入指定位数的令牌,在登录有些对安全性不高的应用或网页时,减少令牌的位数,可以减少用户输入时出错的可能性,简化了操作。
以下介绍本申请令牌终端为主体的方法实施例,该实施例可以对应图2:
令牌终端按照预设算法,每隔预定时间间隔生成m位第一字符,并将生成的第一字符插置于第一令牌的一端,去除另一端的m位字符。
显示该调整后的第一令牌。
其中,m取值可以为小于令牌长度的正整数。
所述验证令牌的位数可以等于或小于第一令牌的位数。
以下结合图4介绍本申请以令牌服务器为主体的方法实施例,该实施例可以对应图2:
S410:令牌服务器200接收终端发送的验证令牌。
S420:令牌服务器200判断所述验证令牌是否包含于接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的第二令牌的集合;如果是,则通过第一终端的验证;其中,所述令牌服务器每隔所述预设时间间隔生成m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位。
终端和令牌服务器200具有同样的预设算法,可以保证两者每隔预定时间间隔后生成同样的第一字符,并结合该第一字符生成相同的令牌。
在本申请一实施例中,在步骤S420后,还可以有步骤S430。
S430:验证通过后,令牌服务器200将接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的第二令牌集合设置为失效。
以下结合图5介绍本申请以令牌服务器为主体的方法实施例,该实施例可以对应图2:
S510:令牌服务器200接收终端发送的验证令牌。
S520:令牌服务器200判断所述验证令牌是否为接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的任一第二令牌的子序列,如果是,则通过第一终端的验证;其中,所述令牌服务器每隔所述预设时间间隔生成所述m位第一字符,并将生成的第一字符插置于所述第二令牌的一端,去除另一端的m位。
以下介绍本申请一种令牌终端,如图6所示,该令牌终端可以包括:
生成模块610,用于按照预设算法每隔预定时间间隔生成m位第一字符,并将生成的字符插置于第一令牌一端,去除另一端的m位;
显示模块620,用于显示所述生成模块610调整后的第一令牌。
以下介绍本申请一种令牌服务器实施例,如图7所示,该服务器装置可以包括:
接收模块710,用于接收第一终端发送的验证令牌。
生成模块720,用于每隔所述预设时间间隔生成m位第一字符,并将生成的第一字符插置于所述第二令牌的所述预设一端,去除另一端的m位。
验证模块730,用于判断所述验证令牌是否包含于接收到该验证令牌之前的第一预设时长内所述生成模块720生成的第二令牌的集合,如果是,则通过第一终端的验证。
其中,m取值可以为小于令牌长度的正整数。
优选地,所述令牌验证服务器还可以包括:
设置模块740,用于将接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的第二令牌集合设置为失效。
以下介绍本申请一种令牌服务器实施例,该服务器装置可以包括:
接收模块810,用于接收第一终端发送的验证令牌。
生成模块820,用于每隔所述预设时间间隔生成m位第一字符,并将生成的第一字符插置于所述第二令牌的所述预设一端,去除另一端的m位。
验证模块830,用于判断所述验证令牌是否为接收到该验证令牌之前的第一预设时长内所述生成模块820生成的任一第二令牌的子序列,如果是,则通过第一终端的验证。
其中,m取值可以为小于令牌长度的正整数。
优选地,所述令牌验证服务器还可以包括:
设置模块840,用于将接收到该验证令牌之前的第一预设时长内所述令牌服务器生成的第二令牌集合设置为失效。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable Gate Array,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字装置“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(AdvancedBoolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University ProgrammingLanguage)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware DescriptionLanguage)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的装置、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。
为了描述的方便,描述以上装置时以功能分为各种单元/模块分别描述。当然,在实施本申请时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(装置)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、装置或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。