基于共享密钥和时间戳的动态二维码考勤方法及系统技术方案

技术编号:30231038 阅读:25 留言:0更新日期:2021-09-29 10:04
本发明专利技术涉及一种基于共享密钥和时间戳的动态二维码考勤方法及系统。该系统包括服务器、移动终端和二维码扫描器。服务器为每位用户分配唯一的共享密钥,服务器和移动终端采用统一的时间戳粒度,并且与网络授时中心同步时间。移动终端基于用户ID、共享密钥和时间戳粒度生成第一密文,并进一步生成字符串和二维码。服务器根据二维码扫描器发来的请求解析字符串,并基于当前时间戳、时间戳粒度和共享密钥生成第二密文,与字符串中解析出的第一密文进行比较,根据密文是否相同向二维码扫描器反馈验证成功或失败的结果。本发明专利技术在无即时数据交互情况下也能正常生成合法二维码,而且采用时间戳作为动态增量因素,生成动态二维码,有效防止了二维码拷贝作弊。效防止了二维码拷贝作弊。效防止了二维码拷贝作弊。

【技术实现步骤摘要】
基于共享密钥和时间戳的动态二维码考勤方法及系统


[0001]本专利技术涉及二维码考勤
,尤其涉及一种基于共享密钥和时间戳的动态二维码考勤方法及系统。

技术介绍

[0002]在二维码考勤
,目前主要分为被扫和主扫两种模式。
[0003]被扫模式也分两种,一种是手机客户端绑定身份信息后,系统服务器为每位用户生成固定唯一的二维码信息推送给手机客户端(或者打印张贴证卡)用来考勤;用户需到指定地点,用手机客户端(或者证卡)展示二维码给专用考勤扫描器(或者考勤APP)进行考勤;此种方式可以确保用户手机在离线情况下亦可正常考勤,但不能防拍照、截图等形式的二维码拷贝作弊。
[0004]另一种是手机客户端绑定身份信息后,系统服务器生成动态的唯一的二维码信息推送给手机客户端用来考勤;考勤扫描器(或考勤APP)扫描用户手机端展示的动态二维码信息,发送给服务器进行验证;每个二维码具有短暂的时效性,过期作废,二维码有效期越短,防止拷贝作弊的效果越好;但如果用户手机离线,不能及时获取有效二维码就不能正常的进行考勤。
[0005]主扫模式是指手机绑定身份信息后,考勤服务系统生成一个用于被用户手机客户端扫描的考勤二维码,置于指定考勤地点;当用户来到指定考勤地点,打开手机客户端,使用摄像头主动扫描此考勤二维码,然后客户端解码二维码中包含的考勤信息,并结合用户手机的定位功能,将用户当前位置信息一并发送到服务器端进行验证。虽然此方式可以有效防止二维码拷贝作弊问题,但对于用户手机要求必须在线,否则离线情况下无法完成正常考勤。

技术实现思路

[0006]针对以上两种模式存在的问题,本专利技术提出了一种新的二维码考勤方法,该方法采用的是被扫模式,但该方法能有效解决现有被扫模式考勤方法存在的二维码拷贝作弊以及离线不能考勤的问题。
[0007]本专利技术的技术方案如下:
[0008]基于共享密钥和时间戳的动态二维码考勤方法,包括以下步骤:
[0009]步骤1、服务器为每位用户配备用户ID和初始密码,对应每个用户ID生成唯一共享密钥Kn,并与用户ID绑定;
[0010]步骤2、服务器通过NTP协议与网络授时中心同步时间,并设置系统时间戳粒度T;
[0011]步骤3、用户在移动终端联网时登录应用程序,通过用户ID从服务器获取共享密钥Kn和时间戳粒度T并保存于移动终端数据库,同时与网络授时中心同步时间;
[0012]步骤4、用户在应用程序中发出考勤指令,应用程序结合时间戳粒度T、当前时间戳N以及该用户的共享密钥Kn生成动态密钥Kn2,之后利用哈希算法将用户ID、动态密钥Kn2生
成第一密文,并将用户ID和第一密文按照一定格式拼成字符串S,之后再转换为二维码展示;
[0013]步骤5、用户在二维码扫描器上扫描步骤4生成的二维码,二维码扫描器解析出字符串S,并发送到服务器进行验证;
[0014]步骤6、服务器从字符串S中识别出用户ID,通过用户ID查找到对应的共享密钥Kn,并结合当前时间戳N

以及系统设置的时间戳粒度T生成动态密钥Kn2,然后利用哈希算法生成第二密文;
[0015]步骤7、服务器从字符串S中解析出第一密文,并与步骤6中生成的第二密文比较,根据密文是否相同向二维码扫描器反馈验证成功或失败的结果;
[0016]步骤8、二维码扫描器将验证结果反馈给用户。
[0017]所述移动终端和服务器采用哈希算法生成密文,密文以Base64格式编码。该方法生成的是不可逆密文,防止二维码被解码后,人为篡改关键信息,如时效性、用户标识等。
[0018]步骤4和步骤6中生成动态密钥的过程如下:
[0019]首先,根据当前时间戳N/N

和时间戳粒度T计算时间戳相对于时间戳粒度T的整倍数t;例如可以采用向下取整函数计算整倍数t,即t=floor(N/T)或t=floor(N

/T);
[0020]然后,将整倍数t转换为字符串ts,将共享密钥Kn和字符串ts连接,得到动态密钥Kn2,即Kn2=Kn+ts。
[0021]在根据当前时间戳计算得到相对于时间戳粒度的整倍数后,由于整倍数是自然数,无法直接与字符串类型的共享密钥进行计算机运算,得到动态密钥,因此需先将整倍数t转换为计算机语言,可利用str函数将t转换为字符串ts,即ts=str(t)。然后可以直接将ts与Kn连接得到Kn2。
[0022]另外,在步骤6服务器端计算整倍数t时,由于时间戳N

相对于时间戳N有一定增长,如果步骤4在计算时间戳N相对于时间戳粒度T的整倍数t时恰巧处于临界状态(即N/T的值接近于t+1,但向下取整得到的仍是t),这种状态下,N

相对于N的一个极短的增长(例如,1ms),就会导致步骤6中得到的整倍数值比步骤4中的整倍数值增加了1。考虑到这种临界情况的可能性,在步骤6中最好分别以t和t

1计算两次第二密文,并且分别与步骤7解析出的第一密文进行两次对比,只有两次均对比失败,才认定本次考勤失败。这样,可进一步确保考勤系统的准确性。
[0023]步骤4和步骤6中利用哈希算法生成密文的公式为:
[0024]Ciphertext=HMAC(SHA

1,ID,Kn2),
[0025]其中Ciphertext代表密文,HMAC代表哈希函数,SHA

1表示散列函数算法,ID表示要加密的用户ID,Kn2表示生成的动态密钥。
[0026]本系统采用时间戳作为动态增量因素,时间戳粒度越小,防拷贝作弊的效果越好。但在设置时间戳粒度时,需同时考虑操作时的人为动作速度、二维码扫描器的速度以及服务器在响应客户端请求时的时间滞后性,因此,步骤2中,设置时间戳粒度T时应考虑步骤4中人为操作展示二维码的速度、步骤5中二维码扫描器的识别速度以及系统的网络响应速度,确保时间戳粒度T大于服务器验证时的时间戳N

与移动终端请求时的时间戳N的差值。这个过程需要在系统测试时调试,并且可能根据网络情况在使用过程中随时调整。为确保精确度,时间戳粒度T和当前时间戳N

和N均取毫秒级,T>0。时间戳粒度T可以是3000

5000ms(优选5000ms)。
[0027]进一步,步骤4中字符串S的格式为“用户ID:第一密文”。
[0028]进一步,步骤5中二维码扫描器以HTTP协议请求格式将字符串发送给服务器。
[0029]所述请求数据格式采用“application/x

www

form

urlencoded”或者“application/json”。
[0030]服务器为每位用户配备用户ID,但为了与员工管理匹配,可直接使用员工登记的手机号作为用户ID,确保唯一性。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.基于共享密钥和时间戳的动态二维码考勤方法,其特征在于包括以下步骤:步骤1、服务器为每位用户配备用户ID和初始密码,对应每个用户ID生成唯一共享密钥Kn,并与用户ID绑定;步骤2、服务器通过NTP协议与网络授时中心同步时间,并设置系统时间戳粒度T;步骤3、用户在移动终端联网时登录应用程序,通过用户ID从服务器获取共享密钥Kn和时间戳粒度T并保存于移动终端数据库,同时与网络授时中心同步时间;步骤4、用户在应用程序中发出考勤指令,应用程序结合时间戳粒度T、当前时间戳N以及该用户的共享密钥Kn生成动态密钥Kn2,之后利用哈希算法将用户ID、动态密钥Kn2生成第一密文,并将用户ID和第一密文按照一定格式拼成字符串S,之后再转换为二维码展示;步骤5、用户在二维码扫描器上扫描步骤4生成的二维码,二维码扫描器解析出字符串S,并发送到服务器进行验证;步骤6、服务器从字符串S中识别出用户ID,通过用户ID查找到对应的共享密钥Kn,并结合当前时间戳N

以及系统设置的时间戳粒度T生成动态密钥Kn2,然后利用哈希算法生成第二密文;步骤7、服务器从字符串S中解析出第一密文,并与步骤6中生成的第二密文比较,根据密文是否相同向二维码扫描器反馈验证成功或失败的结果;步骤8、二维码扫描器将验证结果反馈给用户。2.根据权利要求1所述的基于共享密钥和时间戳的动态二维码考勤方法,其特征在于:步骤4和步骤6中生成动态密钥Kn2的过程如下:首先,根据当前时间戳N/N

和时间戳粒度T计算时间戳相对于时间戳粒度T的整倍数t;然后,将整倍数t转换为字符串ts,将共享密钥Kn和字符串ts连接,得到动态密钥Kn2,即Kn2=Kn+ts。3.根据权利要求1所述的基于共享密钥和时间戳的动态二维码考勤方法,其特征在于:步骤4和步骤6中利用哈希算法生成密文的公式为:Ciphertext=HMAC(SHA

1,ID,Kn2),其中Ciphertext代表密文,HMAC代表哈希函数,SHA

1表示散列函数算法,ID表示要加密的用户ID,Kn2表示生成的动态密钥。4.根据权利...

【专利技术属性】
技术研发人员:蔡晓华
申请(专利权)人:山东梧桐树软件有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1