注意:下面的METHOD为一个算法,根据情况可以是MD5或者BASE64,非特别说明,本文默认以MD5为例。

 

动态二维码格式

二维码格式如下

二维码内容=METHOD(学工号)-生成时间-MD5校验码

其中学工号大小写敏感,生成时间为1970年到当前时间的秒数

例如091d46858f75a02559cc242cd1833727-1577461234-40e2fdbc88820544b029d067ae849bd8

 

其中MD5校验码计算方法为

Md5(METHOD(学工号)-生成时间-约定的密码)

其中学工号和密码大小写敏感,密码中不能有间隔符-,生成的MD5值为32位小写字符

 

如学工号NO.000012019-12-27 15:40:34(1577461234)生成二维码,约定密码为123456,则生成过程为

METHOD(NO.00001)=091d46858f75a02559cc242cd1833727

计算MD5(091d46858f75a02559cc242cd1833727-1577461234-123456)=45f14d3fea2cf388c48b5aa97205474d

最终的二维码为091d46858f75a02559cc242cd1833727-1577461234-45f14d3fea2cf388c48b5aa97205474d

 

在控制器上授权

另外,如果需要授权到控制器上脱机使用(控制器可直接支持动态二维码脱机验证),将MD5(METHOD(学工号))结果中的前16字节字符串(转成卡号实际是8个字节)写入到控制器即可。

 

以工号 NO12345 为例(注意,这里是以METHODBASE64为例计算的

LEFT(MD5(BASE64(NO12345)),16)

=LEFT(MD5(Tk8xMjM0NQ==),16)

=LEFT(4bdd0ff833f6a0c9383e81d31ecf2b75,16)

=4bdd0ff833f6a0c9

 

分成前8字节后8字节从16进制转1010进制

权限结构中的high填充为 4bdd0ff8=>1272778744

权限结构中的low 填充为 33f6a0c9=>0871801033

 

动态二维码权限在控制器上对应的20位卡号=>12727787440871801033