鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件7.5通信加密的簡單實(shí)現(xiàn)_第1頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件7.5通信加密的簡單實(shí)現(xiàn)_第2頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件7.5通信加密的簡單實(shí)現(xiàn)_第3頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件7.5通信加密的簡單實(shí)現(xiàn)_第4頁
鴻蒙南北向開發(fā)基礎(chǔ)及項(xiàng)目實(shí)戰(zhàn)教程 課件7.5通信加密的簡單實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

7.5通信加密的簡單實(shí)現(xiàn)本章主要講述通信加密的簡單實(shí)現(xiàn)。通過學(xué)習(xí)本節(jié)將能夠了解通信加密的簡單實(shí)現(xiàn)。通過本節(jié)學(xué)習(xí)可以熟悉:數(shù)據(jù)加密的方法通信加密的簡單實(shí)現(xiàn)通信加密的簡單實(shí)現(xiàn)(1/6)

在目前項(xiàng)目程序中,并通過TCP通信已實(shí)現(xiàn)傳感器數(shù)據(jù)的更新與監(jiān)控,但傳輸?shù)臄?shù)據(jù)是非加密的明文,通過Wireshark網(wǎng)絡(luò)抓包工具容易捕捉網(wǎng)絡(luò)上的通信數(shù)據(jù),對物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)安全造成威脅。通信加密的簡單實(shí)現(xiàn)(2/6)

通過數(shù)據(jù)的異或即可實(shí)現(xiàn)簡單的加解密。首先二進(jìn)制數(shù)的異或運(yùn)算:0^0=0,1^1=0,0^1=1,1^0=1。通過以上運(yùn)算結(jié)果即可發(fā)現(xiàn)兩個(gè)二進(jìn)數(shù)進(jìn)行異或運(yùn)算,兩個(gè)相同的二進(jìn)制數(shù)異或則結(jié)果為0,

兩個(gè)不同的二進(jìn)數(shù)異或則結(jié)果為1。兩個(gè)字符進(jìn)行異或運(yùn)算,則是通過它們的ASCII碼值進(jìn)行運(yùn)算。如'A'^'B',則是65(0x41)^66(0x42),即二進(jìn)制數(shù):01000001^

01000010結(jié)果:00000011也就是'A'^'B'的結(jié)果是3,然后3^'B':

00000011

^

01000010結(jié)果:01000001

即'A'通信加密的簡單實(shí)現(xiàn)(3/6)

通過數(shù)據(jù)的異或即可實(shí)現(xiàn)簡單的加解密。首先二進(jìn)制數(shù)的異或運(yùn)算:0^0=0,1^1=0,0^1=1,1^0=1。通過以上運(yùn)算結(jié)果即可發(fā)現(xiàn)兩個(gè)二進(jìn)數(shù)進(jìn)行異或運(yùn)算,兩個(gè)相同的二進(jìn)制數(shù)異或則結(jié)果為0,

兩個(gè)不同的二進(jìn)數(shù)異或則結(jié)果為1。兩個(gè)字符進(jìn)行異或運(yùn)算,則是通過它們的ASCII碼值進(jìn)行運(yùn)算。如'A'^'B',則是65(0x41)^66(0x42),即二進(jìn)制數(shù):01000001^

01000010結(jié)果:00000011也就是'A'^'B'的結(jié)果是3,然后3^'B':

00000011

^

01000010結(jié)果:01000001

即'A'由此可見,'A'^'B'的運(yùn)算結(jié)果可作為加密數(shù)據(jù),然后加密數(shù)據(jù)^'B'即可以解密還原。所以在網(wǎng)絡(luò)通信中的數(shù)據(jù)只要異或一個(gè)固定的密鑰字符作為加密,然后再次異或密鑰字符即可實(shí)現(xiàn)解密。但只使用一個(gè)字符的密鑰會(huì)容易遭到破解,所以在項(xiàng)目的加解密方法中采用多個(gè)字符組成的密鑰,數(shù)據(jù)的每個(gè)字符逐一對應(yīng)密鑰字符進(jìn)行異或運(yùn)算進(jìn)行加解密。通信加密的簡單實(shí)現(xiàn)(4/6)

在當(dāng)前項(xiàng)目設(shè)備端程序中增加加解密功能,在IoTMain.c源文件中增加密鑰全局變量與加解密功能函數(shù):staticchar*mykey="mypasswd";//加解密密鑰//加解密功能函數(shù)voidenDecodeText(char*data,intdataLen,constchar*key){for(inti=0;i<dataLen;i++)data[i]=data[i]^key[i%strlen(key)];}在第47行插入網(wǎng)絡(luò)通信數(shù)據(jù)的解密功能代碼如下:

enDecodeText(data,len,mykey);//解密數(shù)據(jù)然后在第60行、第81行處(回傳數(shù)據(jù)前)分別插入加密功能代碼如下:

enDecodeText(data,dataLen,mykey);//加密數(shù)據(jù)通信加密的簡單實(shí)現(xiàn)(5/6)在App端的IoTTcpClient.ets源文件中增加加解密的功能函數(shù)代碼:exportfunctionenDecodeText(data:string,passwd:string):string{lets:string='';for(leti=0;i<data.length;i++){letcode=data.charCodeAt(i)^passwd.charCodeAt(i%passwd.length);s+=String.fromCharCode(code);}returns;}然后在IoTDeviceUI.ets源文件中的IoTDeviceUI組件代碼中增加記錄密鑰的屬性成員:

privatemyKey:string="mypasswd";//密鑰并在第25行處插入在接收網(wǎng)絡(luò)數(shù)據(jù)轉(zhuǎn)換成字符串后進(jìn)行解密的代碼如下:

s=enDecodeText(s,this.myKey);//解密數(shù)據(jù)最后在第47行、第99行處(sendData前一行)分別插入數(shù)據(jù)加密功能的代碼如下:

s=enDecodeText(s

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論