到GPU線程的上限后,GPU將自動(dòng)會(huì)調(diào) 節(jié)要處理的數(shù)據(jù)分組,等待GPU線程處理完之前的數(shù)據(jù)分組后再重新處理后續(xù)的數(shù)據(jù)分組。 [0047]步驟2中,在對(duì)設(shè)備進(jìn)行數(shù)據(jù)采集程序時(shí),還進(jìn)一步包括斷線重連機(jī)制,即當(dāng)數(shù)據(jù) 采集程序與設(shè)備斷開連接時(shí),馬上進(jìn)行自動(dòng)斷線重連,確保數(shù)據(jù)采集程序設(shè)備的實(shí)時(shí)采集。 [0048] 步驟2具體如下:
[0049] 步驟2.1、連接MySQL數(shù)據(jù)庫,讀取設(shè)備配置信息表,將設(shè)備信息存入結(jié)構(gòu)體中,并 分配相應(yīng)的內(nèi)存資源;
[0050] 步驟2.2、根據(jù)站點(diǎn)個(gè)數(shù)創(chuàng)建采集、加解密、存儲(chǔ)和轉(zhuǎn)發(fā)線程;
[0051 ]步驟2.3、查看結(jié)構(gòu)體里面的狀態(tài)變量,獲取狀態(tài)信息;如果處于未連接狀態(tài),則調(diào) 用連接函數(shù)進(jìn)行TCP/IP連接,并更改狀態(tài)為采集狀態(tài);
[0052]步驟2.4、當(dāng)狀態(tài)變量處于采集狀態(tài)時(shí),發(fā)送采集命令對(duì)設(shè)備進(jìn)行寄存器值和線圈 值的數(shù)據(jù)采集;采集的狀態(tài)通過函數(shù)值返回,若采集返回出錯(cuò),則重新設(shè)置連接狀態(tài),等待 下次循環(huán)重新建立連接并采集數(shù)據(jù);
[0053]步驟2.5、當(dāng)狀態(tài)變量處于關(guān)閉狀態(tài)是,通過調(diào)用關(guān)閉函數(shù)關(guān)閉TCP/IP連接并釋放 相應(yīng)的資源,結(jié)束本次數(shù)據(jù)采集;
[0054]步驟2.6、重復(fù)上述2.3-2.5的步驟,獲得各個(gè)站點(diǎn)的明文數(shù)據(jù),并保存到全局緩沖 區(qū)中。
[0055]基于所述數(shù)據(jù)并行加密通信方法的一種基于Modbus協(xié)議的數(shù)據(jù)并行加密通信系 統(tǒng),包括數(shù)據(jù)采集站點(diǎn)和中心監(jiān)控系統(tǒng);
[0056] 上述數(shù)據(jù)采集站點(diǎn)包括站點(diǎn)配置模塊、數(shù)據(jù)采集模塊、改進(jìn)SM4并行加密模塊和數(shù) 據(jù)傳輸模塊;
[0057] 站點(diǎn)配置模塊,根據(jù)數(shù)據(jù)采集站點(diǎn)的實(shí)際需求,產(chǎn)生配置信息表;
[0058] 數(shù)據(jù)采集模塊,根據(jù)配置信息表里的信息對(duì)數(shù)據(jù)采集站點(diǎn)的設(shè)備運(yùn)行信息進(jìn)行采 集,所采集到的數(shù)據(jù)為明文數(shù)據(jù);
[0059] SM4并行加密模塊,采用基于GPU的動(dòng)態(tài)選擇的SM4并行加密法,對(duì)明文數(shù)據(jù)進(jìn)行加 密操作,得到密文數(shù)據(jù);
[0060] 數(shù)據(jù)傳輸模塊,對(duì)加密的密文數(shù)據(jù)進(jìn)行發(fā)送處理;
[0061] 上述中心監(jiān)控系統(tǒng)包括數(shù)據(jù)接收模塊、改進(jìn)SM4并行解密模塊和數(shù)據(jù)顯示監(jiān)控模 塊;
[0062] 數(shù)據(jù)接收模塊,對(duì)加密的密文數(shù)據(jù)進(jìn)行接收處理;
[0063] SM4并行解密模塊,采用基于GPU的動(dòng)態(tài)選擇的改進(jìn)SM4并行解密法,對(duì)密文數(shù)據(jù)進(jìn) 行解密操作,解密出明文數(shù)據(jù);
[0064]數(shù)據(jù)顯示監(jiān)控模塊,將解密所得的明文數(shù)據(jù)進(jìn)行顯示,以獲得數(shù)據(jù)采集站點(diǎn)的設(shè) 備運(yùn)行信息。
[0065]本發(fā)明一種工業(yè)大數(shù)據(jù)環(huán)境下實(shí)時(shí)數(shù)據(jù)的并行加解密方法,具有的特點(diǎn)和有益效 果是:
[0066] 1、利用基于改進(jìn)SM4加密算法對(duì)工業(yè)數(shù)據(jù)進(jìn)行加密和解密,確保Modbus數(shù)據(jù)的安 全;
[0067] 2、改進(jìn)的SM4加密算法利用AES-128密鑰擴(kuò)展算法生成SM4加密算法需要的32個(gè)輪 密鑰,擴(kuò)展密鑰只需要產(chǎn)生一次,該擴(kuò)展密鑰在整個(gè)加密過程中循環(huán)使用。將密鑰擴(kuò)展算法 替換為AES-128密鑰擴(kuò)展算法,使密鑰擴(kuò)展算法與加密算法的結(jié)構(gòu)不同,提高了SM4加密的 安全性,還具有透明、簡(jiǎn)潔、直接高效并且快速的優(yōu)點(diǎn);
[0068] 3、改進(jìn)的SM4加密算法替換SM4加密算法中的S盒,使用高強(qiáng)度的AES-128的S盒,有 助于抵抗傳統(tǒng)的線性密碼分析、差分密碼分析、代數(shù)攻擊及最新的中間相遇攻擊等,提高了 加密算法的安全性;
[0069] 4、改進(jìn)的SM4加密算法將加解密函數(shù)中32迭代所用輪函數(shù)由"固定函數(shù)"改為"動(dòng) 態(tài)選擇",隨機(jī)數(shù)G的每一位作為每一輪迭代時(shí)動(dòng)態(tài)選擇的依據(jù);
[0070] 5、利用GPU的并行計(jì)算能力,將改進(jìn)的SM4加密算法改進(jìn)成并行加密的形式,對(duì)實(shí) 時(shí)數(shù)據(jù)進(jìn)行并行加密,提高了加密運(yùn)算的實(shí)時(shí)性,實(shí)現(xiàn)對(duì)工業(yè)數(shù)據(jù)環(huán)境下實(shí)時(shí)數(shù)據(jù)流的加 解密,從而保證數(shù)據(jù)流正常的傳輸,降低處理延遲;
[0071] 6、改進(jìn)SM4加密采用電碼本模式(ECB),具有簡(jiǎn)單實(shí)用、便于并行計(jì)算和誤差不會(huì) 被傳遞等優(yōu)點(diǎn);
[0072] 7、將站點(diǎn)配置和數(shù)據(jù)采集分開,可以方面地增加或刪除站點(diǎn),擴(kuò)展性強(qiáng),降低了由 設(shè)備變更引起的采集程序的改變;
[0073] 8、實(shí)現(xiàn)了設(shè)備斷線重連機(jī)制,確保在采集的過程中及時(shí)發(fā)現(xiàn)設(shè)備的連接狀態(tài),并 在設(shè)備斷開連接是重新刷新連接;
[0074] 9、當(dāng)設(shè)備數(shù)量達(dá)到一定規(guī)模后,該程序?qū)υO(shè)備配置信息的管理具有良好的交互性 和易操作性。
【附圖說明】
[0075]圖1為數(shù)據(jù)采集系統(tǒng)框圖;
[0076]圖2為Modbus數(shù)據(jù)采集流程圖;
[0077]圖3為基于GPU的改進(jìn)SM4并行加密通信系統(tǒng)加解密示意圖;
[0078]圖4為AES密鑰擴(kuò)展算法示意圖;
[0079]圖5為g()函數(shù)示意圖;
[0080]圖6為基于動(dòng)態(tài)選擇的SM4輪函數(shù)流程圖。
【具體實(shí)施方式】
[0081] 一種基于Modbus協(xié)議的數(shù)據(jù)并行加密通信系統(tǒng),包括數(shù)據(jù)采集站點(diǎn)和中心監(jiān)控系 統(tǒng)。上述數(shù)據(jù)采集站點(diǎn)包括站點(diǎn)配置模塊、數(shù)據(jù)采集模塊、改進(jìn)SM4并行加密模塊和數(shù)據(jù)傳 輸模塊。數(shù)據(jù)采集模塊,根據(jù)配置信息表里的信息對(duì)數(shù)據(jù)采集站點(diǎn)的設(shè)備運(yùn)行信息進(jìn)行采 集,所采集到的數(shù)據(jù)為明文數(shù)據(jù)。SM4并行加密模塊,采用基于GPU的動(dòng)態(tài)選擇的SM4并行加 密法,對(duì)明文數(shù)據(jù)進(jìn)行加密操作,得到密文數(shù)據(jù)。數(shù)據(jù)傳輸模塊,對(duì)加密的密文數(shù)據(jù)進(jìn)行發(fā) 送處理。上述中心監(jiān)控系統(tǒng)包括數(shù)據(jù)接收模塊、改進(jìn)SM4并行解密模塊和數(shù)據(jù)顯示監(jiān)控模 塊。數(shù)據(jù)接收模塊,對(duì)加密的密文數(shù)據(jù)進(jìn)行接收處理。SM4并行解密模塊,采用基于GPU的動(dòng) 態(tài)選擇的改進(jìn)SM4并行解密法,對(duì)密文數(shù)據(jù)進(jìn)行解密操作,解密出明文數(shù)據(jù)。數(shù)據(jù)顯示監(jiān)控 模塊,將解密所得的明文數(shù)據(jù)進(jìn)行顯示,以獲得數(shù)據(jù)采集站點(diǎn)的設(shè)備運(yùn)行信息。
[0082]上述系統(tǒng)所實(shí)現(xiàn)的一種基于Modbus協(xié)議的數(shù)據(jù)并行加密通信方法,包括如下步 驟:
[0083] 步驟1、配置應(yīng)用程序,即根據(jù)數(shù)據(jù)采集站點(diǎn)的實(shí)際需求,產(chǎn)生配置信息表,存儲(chǔ)在 數(shù)據(jù)庫中。將站點(diǎn)配置和數(shù)據(jù)采集分開,可以很方面的增加或刪除站點(diǎn),擴(kuò)展性強(qiáng)。另外,該 配置應(yīng)用程序操作簡(jiǎn)單、交互性強(qiáng)、具有容錯(cuò)能力,可以預(yù)防因誤操作引起的數(shù)據(jù)采集系統(tǒng) 的崩潰。
[0084] 步驟2、根據(jù)配置信息表里的信息對(duì)數(shù)據(jù)采集站點(diǎn)的設(shè)備運(yùn)行信息進(jìn)行采集,所采 集到的數(shù)據(jù)為明文數(shù)據(jù),將采集到的數(shù)據(jù)保存到緩沖區(qū)。在對(duì)設(shè)備進(jìn)行數(shù)據(jù)采集程序時(shí),還 進(jìn)一步包括斷線重連機(jī)制,即當(dāng)數(shù)據(jù)采集程序與設(shè)備斷開連接時(shí),馬上進(jìn)行自動(dòng)斷線重連, 確保數(shù)據(jù)采集程序設(shè)備的實(shí)時(shí)采集。
[0085]步驟2.1、連接MySQL數(shù)據(jù)庫,讀取設(shè)備配置信息表,將設(shè)備信息(IP地址、端口號(hào)、 采集起始地址、采集數(shù)量、數(shù)據(jù)類型等)存入結(jié)構(gòu)體中,并分配相應(yīng)的內(nèi)存資源。
[0086]步驟2.2、根據(jù)站點(diǎn)個(gè)數(shù)創(chuàng)建采集、加解密、存儲(chǔ)和轉(zhuǎn)發(fā)線程。
[0087] 步驟2.3、查看結(jié)構(gòu)體里面的狀態(tài)變量,獲取狀態(tài)信息。如果處于未連接狀態(tài),則調(diào) 用連接函數(shù)進(jìn)行TCP/IP連接,并更改狀態(tài)為采集狀態(tài)。
[0088] 步驟2.4、當(dāng)狀態(tài)變量處于采集狀態(tài)時(shí),發(fā)送采集命令對(duì)設(shè)備進(jìn)行寄存器值和線圈 值的數(shù)據(jù)采集;采集的狀態(tài)通過函數(shù)值返回,若采集返回出錯(cuò),則重新設(shè)置連接狀態(tài),等待 下次循環(huán)重新建立連接并采集數(shù)據(jù)。步驟2.4中,具有斷線重連的數(shù)據(jù)采集的具體過程如 下:
[0089] 步驟2.4.1、對(duì)傳入的請(qǐng)求數(shù)量進(jìn)行判斷,若傳入的請(qǐng)求數(shù)量超過modbus協(xié)議規(guī)定 報(bào)文幀的最大值時(shí),則返回錯(cuò)誤;若沒有超過modbus協(xié)議規(guī)定報(bào)文幀的最大值,則執(zhí)行下一 步;
[0090]步驟2.4.2、根據(jù)傳入的參數(shù)構(gòu)造modbus幀的各個(gè)字段,填充請(qǐng)求報(bào)文的頭部; [0091]步驟2.4.3、利用建立的TCP/IP連接把該modbus幀數(shù)據(jù)發(fā)送至設(shè)備端;根據(jù)返回值 判斷是否發(fā)送成功,如果發(fā)送失敗,則刷新modbus連接,并重新發(fā)送;如果發(fā)送成功,則執(zhí)行 下一步;
[0092]步驟2.4.4、監(jiān)聽是否有數(shù)據(jù)到來;當(dāng)發(fā)現(xiàn)有數(shù)據(jù)到來,利用T C P /1P連接接收 modbus幀數(shù)據(jù);如果接收失敗,說明TCP/IP鏈路出現(xiàn)問題,需要重新建立連接并返回錯(cuò)誤 碼;如果接收成功,則執(zhí)行下一步;
[0093]步驟2.4.5、檢驗(yàn)接收到的數(shù)據(jù)是不是本次請(qǐng)求的所期望的數(shù)據(jù);如果是,則提取 接收到的modbus幀的數(shù)據(jù)部分,并保存到緩沖區(qū)中,如果不是,則返回錯(cuò)誤碼。
[0094]步驟2.5、當(dāng)狀態(tài)變量處于關(guān)閉狀態(tài)是,通過調(diào)用關(guān)閉函數(shù)關(guān)閉TCP/IP連接并釋放 相應(yīng)的資源,結(jié)束本次數(shù)據(jù)采集。
[0095]步驟2.6、重復(fù)上述2.3-2.5的步驟,獲得各個(gè)站點(diǎn)的明文數(shù)據(jù),并保存到全局緩沖 區(qū)中。
[0096]步驟3、利用基于GPU的動(dòng)態(tài)選擇的改進(jìn)SM4并行加密法對(duì)采集到的明文數(shù)據(jù)進(jìn)行 加密。即
[0097] 步驟3.1、利用AES-128密鑰擴(kuò)展法生成SM4加密法所需的32個(gè)擴(kuò)展密鑰。擴(kuò)展密鑰 只需要產(chǎn)生一次,該擴(kuò)展密鑰在整個(gè)加密過程中循環(huán)使用。將密鑰擴(kuò)展算法替換為AES-128 密鑰擴(kuò)展算法,使密鑰擴(kuò)展算法與加密算法的結(jié)構(gòu)不同,提高了SM4加密的安全性,還具有 透明、簡(jiǎn)潔、直接高效并且快速的優(yōu)點(diǎn)。
[0098]步驟3.2、隨機(jī)生成1個(gè)32位的隨機(jī)數(shù)G。
[0099]步驟3.3、將明文數(shù)據(jù)、擴(kuò)展密鑰、隨機(jī)數(shù)G和AES-128的S盒從