天天看點

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使用者程式雲端授權系統設計

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加密過程講解

繼續閱讀