文章图片
摘要基于HTTP请求通过外接串口服务器实现MCGS组态屏(TPC7062Ti)云端授权系统搭建 , 重点讲解如何实现系统对时(基于UDP协议的NTP对时协议)、加密算法的选择、加密算法的设计与实现 。
【算法|MCGS用户程序云端授权系统设计】
算法实现MCGS组态屏授权管理可以通过“开发平台”内置的“用户权限管理” , 这种方式基本属于一次配置授权永久有效 , 而现在介绍的这种授权方式可以利用云平台修改设备授权状态 , 实现更加可控的设备管理 。
通过MCGS实现云端授权有几个难点 , 如何将MCGS组态屏接入互联网 , 如何连接管理服务器 , 如何进行数据加密与解密 , 如何获取当前时间戳(非MCGS时间戳)等困难 。
1.接入互联网
“接入互联网”可以使用市场上常见的串口转4G、串口转WIFI、串口转以太网设备实现 , 其中串口转4G对于需要移动的应用场景有着不可替代性 , 但这种方式存在流量费用 。 一般来说MCGS组态屏应用于固定环境 , 此时可以采用串口转WIFI或者串口转以太网 , WIFI相对于以太网稳定性较差且易受干扰 , 接下来我就采用MCGS组态屏连接串口转以太网的NA111实现设备上网 。
2.连接管理服务器
“连接管理服务器”为了方便我就直接采用OneNET的HTTP服务器实现 , 应用场景并不复杂 , 只需要定义一个字符型变量 , 并且可以通过“GET\\POST”请求或修改变量就行 。
3.获取时间戳
“获取当前时间戳”可以通过串口服务器NA111连接NTP服务器通过NTP协议获取准确时间戳 , 这里我就通过中国国家授时中心(ntp.ntsc.ac.cn:123)的NTP服务器获取时间 。
【注】网络时间协议 , 英文名称:Network Time Protocol(NTP)是用来使计算机时间同步化的一种协议 。
数据加密这几个难点中最难的是如何对数据进行加密 , 利用MCGS脚本开发进行数据的加密与解密是比较困难 , 若一个加密不能被该理解的设备所理解这样的加密是没有意义的 , 而MCGS并不支持使用加密库函数导致加密解密都需要从原理自行封装脚本 , 导致不能使用运算过于复杂的算法 , 常见的加密算法有对称加密和非对称加密和散列算法 , 接下来分析哪个算法适合MCGS脚本加密 , 先从安全级别较高的非对称加密分析 。
1.非对称加密
非对称加密算法 , 又称为公开密钥加密算法 。 它需要两个密钥 , 一个称为公开密钥 (public key) , 即公钥 , 另一个称为私有密钥 (private key) , 即私钥 , 常见的非对称加密算法有RSA、ECC等 , 他们都有运算复杂且非常消耗MCU的算力 , 并不适用于组态屏的加密 。
共享密钥加密算法 。 在对称加密算法中 , 使用的密钥只有一个 , 发送和接收双方都使用这个密钥对数据进行加密和解密 。 这就要求加密和解密方事先都必须知道加密的密钥 。
2.散列算法
散列算法 , 常见的有MD5、CRC16、SHA1等 , 严格来说他们不能算作加密算法而是摘要算法 , 他们加密的结果是不可逆的 , 常被用于文件完整性以及数字签名等场景 。
3.对称加密
现在就只剩下了对称加密 , AES、DES、3DES等都属于对称加密 , 对称加密结果是可逆的 , 算法可以简单可以复杂 , 对于笔者来说 , 使用组态屏的脚本程序实现AES、DES、3DES仍有些困难 , 并且写这样脚本有点违背使用MCGS的初衷(开发简单) , MCGS的加密脚本就只能使用对称加密的思想来实现 。
上述这么多的算法留着给那些有兴趣 , 并且熟悉MCGS脚本开发的人自行探索 , 笔者这里就是用密码本加密 , 为了方便前端开发 , 就使用Base64编码表在结合Base64格式化文本实现数据加密 , 若认为这样的算法不可靠 , 可以对明文进行“加”“减”进一步加密 , 不建议使用“乘”“除”“与”“或”“非”“异或”这些可能导致数据不可逆的算法 , 这里就不再额外加密明文 。
- 互联网|警惕!八成互联网电视系统存非法采集用户数据问题
- GPU|魅族产品焕新用户共创大计划上线,购机竟能享两年质保?
- 零售业|谁还敢用电视?中国信通院公布:八成互联网电视侵犯用户隐私安全
- 支付宝|如果支付宝倒闭,用户的钱还能取出来吗?欠的钱还要还吗?
- 逸仙电商|打击网站采集:搜狗搜索“石破算法”正式生效
- 小米|年度最强小屏旗舰 小米12S爆料:加入徕卡影像算法
- 报告显示八成互联网电视系统存非法采集共享用户数据问题
- 对于老用户来说|win7系统新增性能指标功能
- 腾讯|优酷视频提价看齐腾讯爱奇艺,用户表示“这个价格涨得没道理”
- 续航|魅族19快充方案曝光:65W还是100W用户决定