MCGS用户程序云端授权系统设计

MCGS用户程序云端授权系统设计

基于HTTP请求通过外接串口服务器实现MCGS组态屏(TPC7062Ti)云端授权系统搭建,重点讲解如何实现系统对时(基于UDP协议的NTP对时协议)、加密算法的选择、加密算法的设计与实现。

算法实现

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格式化文本实现数据加密,若认为这样的算法不可靠,可以对明文进行“加”“减”进一步加密,不建议使用“乘”“除”“与”“或”“非”“异或”这些可能导致数据不可逆的算法,这里就不再额外加密明文。

使用Base64就需要了解Base64,Base64算法很简单只需要把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式。如果剩下的字符不足3个字节,则用0填充,输出字符使用'=',因此编码后输出的文本末尾可能会出现1或2个'=',使用MCGS脚本实现这一操作也不算简单但可以实现,先将Base64编码表使用字符串变量一一存储,比如将base64_list的初值赋予“ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/”,也可以自定义密码本(每个字符都必须唯一对应)对应的加密时也需要使用对于密码本加密,上述字符串顺序不可乱,乱了就是不再是Base64编码表。

MCGS加密过程讲解

通过!InStr(1,base64_list,”M”)查找加密字符的码值,解出的码值使用!I2Bin(s)转换为二进制字符(不足6字节前面填零),再通过字符串拼接合成原始二进制字符串,将“=”忽略不转换(因为Base64把三个字节分成四个字节,不足3个字节,则用0填充,输出字符使用'='),使用!Mid(str,1,8)和!Bin2I(s)转换为ASCII码值,在使用!I2Ascii(s)转换为ASCII字符,拼接这些字符串就可以得到明文。

解决了怎么加密,现在需要考虑对什么数据进行加密,这取决于我们要实现怎样的授权系统,比如,实现云端修改账户模式,这样就需要预先定义模式对应码值表(9573-长期授权,6685-授权1天等等),为了保证码值的安全甚至可使用当前时间对码值进行保护,实现动态密钥。或者利用云端设置有效时间,也就是需要对结束时间的时间戳进行加密。

本文仅探讨算法和实现方法,有时间再讲解算法的实现。

文章来源:https://www.ebyte.com/new-view-info.html?id=2089

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/342199.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

「技术」室内定位—AOA测距算法,定位精度可达1m

什么是AOA测距? 到达角度测距(Angle-of-Arrival:AOA):基于信号到达角度的定位算法是典型的、基于测距的定位算法,在无线传感网络应用中,AOA(到达角度测距)作为网络节点自定位一种常见的定位算法…

飞畅科技-交换机的三种交换方式详解

交换机是一种用于电(光)信号转发的网络设备,它可以为接入交换机的任意两个网络节点提供独享的电信号通路。交换机拥有一条高带宽的背部总线和内部交换矩阵,在同一时刻可进行多个端口对之间的数据传输,交换机的传输模式…

MCGS组态屏通过E90-DTU数传电台实现PLC远程控制

一.案例简介 通过使用成都亿佰特电子科技有限公司开发的E90-DTU(230SL30-ETH)_V2.0结合E90-DTU(230SL30)实现串口屏远程控制PLC。 二.硬件准备 昆仑通态(MCGS)-TPC7062(TX)串口控制屏; 施耐德TM221系列PLC&#xf…

交换机的作用是什么?交换机功能及工作原理详解!

交换机有多个端口,每个端口都具有桥接功能,可以连接一个局域网或一台高性能服务器或工作站。实际上,交换机有时被称为多端口网桥。那么,交换机的作用是什么?交换机的功能及工作原理是什么?接下来我们就一起…

数传电台实现PLC远程控制中MCGS参数配置与查询

1、施耐德PLC 施耐德IPv4参数查询以及是否能使Modbus Server,通过查询TM221手册可获取端口为502,不同的PLC端口可能不同,一般公司都将502作为Modbus Serve默认端口。 2.串口屏(MCGS组态屏) 打开MCGS嵌入版软件&#…

使用Apache JMeter负载测试Web应用程序

Apache JMeter是模拟网络应用程序上的用户负载以测试性能的出色工具。 您可以通过指定用户数量和请求之间的时间间隔轻松地构建测试计划,然后JMeter将为每个用户生成一个线程并访问您的Web应用程序。 在测试结束时,您将获得一份性能摘要报告,…

IoT物联网无线通信模块该如何选择?

目前大多数物联网(IoT)的节点都是使用ZigBee技术来进行组网的,然后通过gateway(网关)来连接网络。但是ZigBee模块的优势并不明显,也有很多公司正在开发新的无线模块来代替它,例如lora模块、蓝牙…

交换机端口故障问题解决方法

工业交换机可以说是工业安防工程中很重要的一款设备,在网名使用工业交换机的过程中,难免会遇到一些故障问题,在这其中工业交换机的端口故障可以说是是最常见的硬件故障,无论是光纤端口还是双绞线的RJ-45端口,在插拔接头…

局域网工业交换机的种类和选择注意事项!

工业交换机相比商业级交换机具有各方面性能的优势,在局域网工业交换机是组成网络系统设备的核心。那么,局域网工业交换机有哪些种类?新手该如何选择局域网交换机呢?需要注意哪些事项呢?接下来就跟随飞畅科技的小编一起…

[渝粤教育] 浙江工商大学 大学英语(4)(韩颖) 参考 资料

教育 -大学英语(4)(韩颖)-章节资料考试资料-浙江工商大学【】 8. Communication 测验 1、【多选题】Choose all the statements concerning Communication that are true: A、Speaks and writes clearly and effectively. B、Is c…

[渝粤教育] 温州医科大学 医用高等数学 参考 资料

教育 -医用高等数学-章节资料考试资料-温州医科大学【】 函数的概念和性质随堂测验 1、【单选题】函数的定义域是( ) A、 B、 C、 D、 参考资料【 】 2、【单选题】设f(x)是定义在R上的一个函数,则函数F(x)f(x)-f(-x)在R上一定是(…

spark restful_使用Spark构建简单的RESTful API

spark restful免责声明 :这篇文章是关于名为Spark的Java微型Web框架的,而不是关于数据处理引擎Apache Spark的 。 在此博客文章中,我们将看到如何使用Spark构建简单的Web服务。 如免责声明中所述,Spark是受Ruby框架Sinatra启发的…

如何正确使用工业级交换机?

工业交换机具有电信级性能特征,可耐受严苛的工作环境,产品系列丰富,端口配置灵活,可满足各种工业领域的使用需求。那么,我们在使用工业级交换机的过程中该如何正确使用呢?接下来就跟随飞畅科技的小编一起来…

[渝粤教育] 盐城工学院 无机及分析化学C 参考 资料

教育 -无机及分析化学C-章节资料考试资料-盐城工学院【】 第一章 线上单元作业 第一章 单元测验 1、【单选题】下列数据中有效数字为四位的是 A、0.017 B、0.5810 C、0.202 D、pH11.21 参考资料【 】 2、【单选题】以下测量数据明确为4位有效数字的是 A、pKb 5.652 B、5010 C、…

更好的默认NullPointerException消息是否会传入Java?

我最近对OpenJDK core-libs-dev邮件列表上的2019年 2月至2019年 3月的讨论感兴趣,该讨论涉及解决缺少与NullPointerException相关联的详细消息的问题,该消息在用其无参数构造函数实例化后抛出。 这是我在使用Java时经常遇到的一个问题,甚至导…

什么是工业光纤环网交换机?

环网交换机就是可以组建环形网络的交换机,与其他类型交换机相比,具有稳定、自愈时间段等优点。每个环网交换机上有两个用于组环的端口,交换机之间通过手拉手形式构成了环形的网络拓扑。此外,环网交换机采用了某些特殊技术&#xf…

[渝粤教育] 苏州大学文正学院 网络互联技术与实践 参考 资料

教育 -网络互联技术与实践-章节资料考试资料-苏州大学文正学院【】 计算机网络互联设备随堂测验 1、【单选题】网桥处理的是 A、脉冲信号 B、MAC 帧 C、IP 包 D、ATM 包 参考资料【 】 2、【单选题】交换机工作在 OSI 七层的哪一层 A、一层 B、二层 C、三层 D、三层以上 参考资…

什么是工业级交换机?工业交换机作用有哪些?

最近有很多朋友来问我,什么是工业级交换机,跟商用交换机有什么区别。今天,咱们在这里具体来介绍下什么是工业交换机。工业交换机,即应用于工业控制领域的以太网交换机设备,无论是在性能还是作用方面都与普通交换机有很…

[渝粤教育] 西北大学 数据结构 参考 资料

教育 -数据结构-章节资料考试资料-西北大学【】 数据结构的基础概念随堂测验 1、【单选题】一个抽象类型包括数据对象、 和一组处理数据的操作。 A、数据对象中各元素间的结构关系 B、数据元素集 C、接口 D、数据对象集 参考资料【 】 2、【填空题】抽象数据类型具有 、信息隐蔽…

Spring Boot CommandLineRunner和ApplicationRunner

在本快速教程中,我们将探索Spring Boot中两个非常流行的界面: CommandLineRunner和ApplicationRunner 。 这些接口的一种常见用例是在应用程序启动时加载一些静态数据。 虽然,我看到这种用法主要用于测试数据设置。 它们都是带有run&#x…