首页 > 编程语言 >MCGS用户程序云端授权系统设计

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

时间:2022-11-08 12:37:10浏览次数:37  
标签:加密 串口 算法 加密算法 MCGS 服务器 用户程序 云端

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

基于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脚本加密,先从安全级别较高的非对称加密分析。

MCGS用户程序云端授权系统设计_加密算法_02

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​

标签:加密,串口,算法,加密算法,MCGS,服务器,用户程序,云端
From: https://blog.51cto.com/ebyte/5832534

相关文章

  • 华为云桌面——云端上“最卷的云”
    随着近年来疫情的常态化管理,各个行业均陆续适应着疫情前后大环境的转变。线上办公成为了企业正常沟通和业务往来的刚需,这也是让广大打工人最头疼的地方。突如其来的居家办公......
  • 将应用迁移至云端面临的问题​
    传统软件的架构设计就是为了运行在公司的企业防火墙内。如果软件开发是在数年以前完成的,那么软件对其运行所处的物理硬件甚至开发使用的技术堆栈非常可能有着很高的依赖性。......
  • 将应用迁移至云端面临的问题
    传统软件的架构设计就是为了运行在公司的企业防火墙内。如果软件开发是在数年以前完成的,那么软件对其运行所处的物理硬件甚至开发使用的技术堆栈非常可能有着很高的依赖性......
  • 云端协同,打造全场景智能会议,华为云会议更专业“会”更好
     众所周知,伴随企业数字化转型的加速和新冠疫情的常态化发展,近几年,视频会议已经成为各大企业沟通交流的新宠儿。同时随着云技术的发展,云会议快速普及,中小企业也能享受到视......
  • 盘点云端常用存储类型
    在云端有很多存储类云产品,最为常见的就是云盘、OSS、RDS,还有NAS、共享块存储等相应存储类产品。相应存储类的云产品本质上还是为了解决数据持久化的问题。存储的数据结构类......
  • idea远程连接云服务器,并将本地代码部署在云端进行运算
    电脑内存和显存过小,需要在云服务器进行运算我的模型,由于一直在自己的电脑上写的代码,于是之间迁移代码到云服务器,只要通过ssh链接到云端后,将python解释器使用云端的解释器就......
  • 英伟达2000TOPS大算力与云端芯片
    英伟达2000TOPS大算力与云端芯片参考文献链接https://mp.weixin.qq.com/s/oi14v83S_0iUBY31xqvjPQhttps://mp.weixin.qq.com/s/HkfgdaVJoaX7N_3IXGXwLAhttps://mp.weix......
  • Testing in the Cloud:使用TPT进行云端测试
    前言  最近,我们经常听说解决方案是去云端。但是为什么呢? 我们注意到,云技术现在在科技领域非常流行。即便在嵌入式开发领域,也有越来越多的人希望将开发转移到云中......
  • EasyCVR云端录像模块无法进行下载是什么原因?该如何解决该问题?
    EasyCVR平台支持海量视频汇聚管理,能兼容多类型的设备接入,可覆盖市面上大多数的视频源设备,包括各种IPC、NVR、视频服务器、单兵设备、编码器设备等。平台也可支持多协议接入......
  • 汽车芯片-云端芯片-GPU技术
    汽车芯片-云端芯片-GPU技术参考文献链接https://mp.weixin.qq.com/s/9uz54KvN3EmeExmO2FVj3ghttps://mp.weixin.qq.com/s/tB7kwXnWqhQt4DGaP6TlMwhttps://mp.weixin.qq......