ntp时间同步服务器地址(NTP服务)


摘要

基于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服务器通过NT♔P协议获取准确时间戳,这里我就通过中国国家授时中心(ntp.ntsc.ac.cꦬn:123)的NTP服务器获取时间。

【注】网络时间协议,英文名称:Network Time Protocoജl(NTP)是用来使计算机时间同步化的一种协议。

数据加密

这几个难点中最难的是如何对数据进行加密,利用MCGS脚本开发进行数据的加密与解密是比较困难,若一个加密不能被该理解的设备所理解这样的加密是没有意义的,而MCGS并不支持使用加密库函数导致加密解密都需要从原理自行封装脚本,导致不能使用运算过于复杂的算法,常见的加密算法有对称加密和非对称加密和散列算法,接下来分析哪个算法适合MCGS脚本加密,先从安全级别较高的非对称加密分析。

1.非对称加密

非对称加密算法,又称为公开密钥加密算法。它需要两个密钥,一个称为公开密钥 (public key),即公钥,另一个称为私有密钥 (private key),即私钥,常见的非对称加密算法有RSAECC等,他们都有运算复杂且非常消耗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天等等),为了保证码值的安全甚至可使用当前时间对码值进行保护,实现动态密钥。或者利用云端设置有效时间,也就是需要对结束时间的时间戳进行加密。

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

好了,这篇文章的内容发货联盟就和大家分享到这里,如果大家网络推广引流创业感兴趣,可以添加微信:80709525  备注:发货联盟引流学习; 我拉你进直播课程学习群,每周135晚上都是有实战干货的推广引流技术课程免费分享!


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 [email protected] 举🐟꧑报,一经查实,本站将立刻删除。

您可能还会喜欢:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。