《架构世界》2020移动开发刊:建设移动统一消息管理中心
上QQ阅读APP看书,第一时间看更新

二、二维码管理系统的提出与设计

提出

在企业的发展中,任何技术和系统都是解决企业实际问题而产生的。对企业来讲,尽管二维码有如此宽泛的应用场景,但二维码应该如何去统一管理呢?如果是由各个业务系统去单独完成二维码的处理工作,既会产生大量重复开发工作,又无法有效的统一管理。为此,提出二维码管理系统。按照预定好的内容规范和生成调用规范,为企业各个业务系统提供标准的二维码管理服务,使各业务系统可以更加专注于二维码的实际应用落地。

设计

在二维码系统的设计层面,我们既要考虑到使用者调用系统的难度,又要保证系统的安全性和规范性。

•即插即用

•二维码内容加密

•内容完装性保证

•生命期机制

•二维码能力SDK易用性

•统一二维码标准规范

二维码管理系统是将二维码的生成、验证、加解密、解析等通用能力进行抽象,采用面向对象的设计方法,达到系统的内部高内聚,对外低耦合的目的。以组件化的方式进行封装,充分考虑到使用方的二维码相关能力调用场景,为企业的各个业务系统提供简单易用的二维码能力。

需要考虑的问题

•二维码内容泄露或二维码伪造引起的安全性问题

•传输过程中数据篡改引起的完整性问题;

•有效期引起的生命期问题。

同时在二维码管理系统的设计,我们需要特别考虑安全性、完整性和生命期的问题,这也是企业二维码系统最基础的要求。为了解决这些问题二维码管理系统会在二维码生成时对二维码内容进行如下处理,首先根据调用业务系统传递的有效期字段生成对应的有效期校验字段按预定规则拼装在二维码内容明文后,然后采用哈希算法(如SM3算法、MD5算法、SHA1算法)对添加过有效期验证字段的二维码明文进行计算来生成对应的完整性校验字段,最后将明文与校验字段组合后按二维码管理系统预设密钥进行对称加密(如DES算哒、AES算法、SM4算法),最终得到用来生成二维码的内容并生成二维码图片返回给业务系统。

在二维码内容解析的时候由业务系统通过扫描设备识别出二维码内容密文,然后将密文传递回二维码管理系统。二维码管理系统在接收到扫描出的二维码密文时先通过之前加密时使用的对称算法的逆算法得到带有校验字段的明文,然后通过之前用来生成校验字段的非对称算法(如SM3算法、MD5算法、SHA1算法)检验明文与检验字段是否符合,保证了二维码完整性的校验,最后在通过在明文中预先拼接的有效期字段进行有效期判断,若过期失效则返回失效信息,反之去除有效期字段返回原始二维码内容。

通过上述对二维码内容处理的流程有效地避免了二维码在使用中的大部分问题。

系统场景设计

在设计中我们需要考虑两种场景,主动扫描和被动扫描。

主动扫描

对于主动扫描的场景,用户通过二维码扫描设备扫描二维码获得二维码密文信息,发送至企业的业务系统,由业务系统调用二维码管理系统对密文进行解析、处理,并在获取到解析结果后进行对应的业务操作并反馈给用户最终处理结果。

被动扫描

对于被动扫描的场景,在用户需要被扫码的时候由用户的二维码展示设备发送请求至业务系统,业务系统收到请求后调用二维码管理系统对应的二维码生成服务,生成二维码,并将二维码返回给显示设备,由显示设备显示给扫描方完成被动扫描动作。最后再由扫描方业务系统执行主动扫描场景中的业务处理流程。

主要参考文档

主要参考的文档:

•《QRCODE

•《系统安全规范》

•《二维码网格矩阵码(SJ/T 11349-2006)》

•《二维码紧密矩阵码(SJ/T 11350-2006)》

•《GB/T 18284-2000