本發明涉及通信技術領域,尤其涉及一種建立連接的方法。
背景技術:
現有技術中,智能家居的使用越來越頻繁,然而現有技術不能很方便地將智能家居與手機或者平板電腦等建立連接,當手機進入一個裝配有陌生的智能設備的環境中,只能通過用戶的主動操作才能操控該智能設備,由于現有終端(比如電視/盒子)在局域網內沒有提供被發現服務。導致無法實現局域網內終端與發現端的交互。并不能自發與該智能設備建立連接關系進行信息交互。
技術實現要素:
本發明的目的是提供一種能夠自動發現局域網內的終端設備并建立連接以進行信息交互的方法。
為解決現有技術存在的問題,本發明提供了一種建立連接的方法,所述方法包括:
第一終端提取發現消息的第一hash值;
利用加密算法生成私鑰,將所述發現消息的第一hash值進行加密處理生成第一簽名信息;
將所述第一簽名信息和發現消息進行編碼處理,生成字符串;
所述第一終端向網內發送廣播消息,所述廣播消息中包括字符串;
第二終端啟動服務監聽端口,接收所述廣播消息,并提取所述廣播消息中的字符串;
將所述字符串進行解碼處理,獲取第二簽名信息和發現消息;
利用公鑰對簽名信息進行解密得到第二hash值;
將第二hash值與第一hash值進行匹配處理;
如第二hash值與第一hash值匹配一致,提取設備信息的第三hash值;
將所述第三hash值進行加密處理生成第三簽名信息;
將所述第三簽名信息進行編碼處理,得到響應信息,將所述響應信息發送到第一終端;
所述第一終端對所述響應信息進行解碼處理,得到第四簽名信息;
將所述第四簽名信息利用私鑰進行解密,得到第四hash值;
第四hash值和第三hash值進行匹配;
如果第四hash值和第三hash值匹配一致,則所述第一終端與第二終端建立連接。
進一步地,所述方法還包括,第二終端啟動服務監聽端口,接收所述廣播消息具體為:
預先設定時間閾值,在時間閾值內第二終端啟動服務監聽端口,接收所述廣播。
進一步地,所述方法還包括,所述第一簽名信息和發現消息進行編碼處理,生成字符串具體為:
所述第一簽名信息和發現消息編碼處理,生成ascii碼字符串。
進一步地,所述設備信息包括第二終端終端碼信息和第二終端端口信息。
進一步地,所述如果第四hash值和第三hash值匹配一致,則所述第一終端與第二終端建立連接具體為:
所述第一終端向第二終端發送建立連接請求;
所述第二終端接收所述建立連接請求,并與第一終端建立連接。
進一步地,第一終端提取發現消息的第一hash值之后還包括:
利用加密算法生成密鑰對,所述密鑰對包括公鑰和私鑰;
所述加密算法采用互質關系、歐拉函數、歐拉定理和模反元素。
進一步地,所述方法還包括,利用加密算法生成密鑰對具體為:
隨機選擇第一質數和第二質數,所述第一質數和第二質數不相等;
將所述第一質數和第二質數相乘得到乘積數;
將所述乘積數代入歐拉函數進行計算,得到歐拉函數值;
隨機選擇第一整數,所述第一整數大于1且小于所述歐拉函數值,且所述第一整數與所述歐拉函數值互質;
計算第一整數與所述歐拉函數值的模反元素,得到模反元素值;
將所述乘積數和所述第一整數封裝成公鑰,將所述乘積數和所述模反元素值封裝成私鑰:
本發明實施例提供的建立連接的方法能夠自動發現局域網內的終端設備并建立連接以進行信息交互。
附圖說明
圖1為本發明實施例提供的建立連接的方法的流程圖。
具體實施方式
下面通過附圖和實施例,對本發明的技術方案做進一步的詳細描述。
本發明的目的是通過搜索終端發送發現消息來搜尋環境中的被搜索終端,搜索終端發送發現消息前先對發現消息進行加密操作,進而通過被搜索終端使用公鑰/私鑰對加密的發現消息解密來實現檢測被搜索終端和搜索終端是否能夠建立連接進而實現數據交互,同時被搜索終端通過向搜索終端發送加密的設備信息來達到驗證搜索終端和被搜索終端是否能建立連接的目的。詳細的來講,即通過對發現消息提取第一hash值,再對第一hash值進行加密操作,隨后將加密的第一hash值和發現消息轉碼后發送至被搜索終端,若被搜索終端可以接受該加密的第一hash值和發現消息,則進行解碼和解密操作,被搜索終端獲取到解密后的發現消息后,將自身的設備信息提取第二hash值并加密,隨后將加密的第二hash值和設備消息轉碼后發送至搜索終端,搜索終端對其成功轉碼解密后,則二者可以建立連接進行數據交互。
圖1為本發明實施例提供的建立連接的方法的流程圖,如圖所示,所述方法包括:
s101:第一終端提取發現消息的第一hash值。
第一終端即搜索終端,相對應的,本發明的第二終端為被搜索終端。第一終端發送的發現消息即搜索終端發現被搜索終端的存在的一個請求信息,當搜索終端需要對環境中的終端進行搜索發現時,先提取發現消息的hash值,進而才能進行后續的步驟。
s102:利用加密算法生成私鑰,將所述發現消息的第一hash值進行加密處理生成第一簽名信息。
第一終端在向第二終端發送發現消息前,要先提取發現消息的第一hash值,發現消息為第二終端可以接受的消息格式,比如為msg格式。
第一終端使用rsa算法預先生成密鑰對,密鑰對包括公鑰和私鑰。第一終端利用私鑰對上述第一hash值進行加密處理,生成第一簽名信息。
上述操作的意義在于,第一終端需要向第二終端或者其他終端發送發現消息,顧名思義,發現消息用于探知能夠接受該發現消息的第二終端或者其他終端的存在,當第二終端接收到本發現消息且進行有效反饋時,則認為該第二終端可以和第一終端建立連接。而對發現消息進行加密處理可以達到驗證第二終端是否符合第一終端建立連接的要求的效果。
進一步地,第一終端提取發現消息的第一hash值之后還包括:
利用加密算法生成密鑰對,所述密鑰對包括公鑰和私鑰;
所述加密算法采用互質關系、歐拉函數、歐拉定理和模反元素。
進一步地,所述方法還包括,利用加密算法生成密鑰對具體為:
隨機選擇第一質數和第二質數,所述第一質數和第二質數不相等;
將所述第一質數和第二質數相乘得到乘積數;
將所述乘積數代入歐拉函數進行計算,得到歐拉函數值;
隨機選擇第一整數,所述第一整數大于1且小于所述歐拉函數值,且所述第一整數與所述歐拉函數值互質;
計算第一整數與所述歐拉函數值的模反元素,得到模反元素值;
將所述乘積數和所述第一整數封裝成公鑰,將所述乘積數和所述模反元素值封裝成私鑰。
上述rsa是安全領域下的非對稱加密算法,即使用公鑰/私鑰對msg格式的第一hash值進行加密處理,再使用私鑰/公鑰進行解密得到第二hash值,與接收到的msg的第一hash值進行匹配。
加密/解密過程中使用到互質關系,歐拉函數,歐拉定律,模板元素等。
其中密鑰生成的步驟為:
第一步,隨機選擇兩個不相等的質數p,q。
第二步,計算p和q的乘積n。
第三步,計算n的歐拉函數φ(n)。
第四步,隨機選擇一個整數e,條件是1<e<φ(n),且e與φ(n)互質。
第五步,計算e對于φ(n)的模反元素d。
第六步,將n和e封裝成公鑰,n和d封裝成私鑰。
s103:將所述第一簽名信息和發現消息進行編碼處理,生成字符串。
進一步地,所述方法還包括,所述第一簽名信息和發現消息進行編碼處理,生成字符串具體為:
所述第一簽名信息和發現消息編碼處理,生成ascii碼字符串。
第一終端得到發現消息和第一簽名消息后,對該發現消息和第一簽名信息進行數據編碼操作轉化為ascii碼格式的字符串。比如可以使用base64將非ascii字符的數據轉換為ascii字符,以此保證傳輸數據的正確和安全。
s104:所述第一終端向網內發送廣播消息,所述廣播消息中包括字符串。
第一終端對第一簽名信息和發現消息編碼處理完畢后,將第一簽名信息和發現消息以廣播消息的形式發送,廣播消息則也是以字符串的形式存在。第一終端向udp協議的廣播地址發送該廣播消息,而該udp協議則是由局域網ip和子網掩碼得出。
s105:第二終端啟動服務監聽端口,接收所述廣播消息,并提取所述廣播消息中的字符串。
第一終端發送出廣播消息后,第二終端啟動相應的服務監聽端口,該服務監聽端口要避免使用已經使用的端口,比如避免使用第二終端上已注冊的端口和已知的端口。第二終端啟動的服務監聽端口接收到上述的廣播消息并從中提取所含有的字符串,提取完成后對字符串進行后續處理。
進一步地,所述方法還包括,第二終端啟動服務監聽端口,接收所述廣播消息具體為:
預先設定時間閾值,在時間閾值內第二終端啟動服務監聽端口,接收所述廣播。
為了提高發現效率,第二終端啟動服務監聽端口接收廣播消息這一操作,應當在一定時間內完成。因此預先設定一個時間閾值,若在該時間閾值內第二終端成功啟動服務監聽端口并接收了上述廣播消息,則認為該項操作成功,否則認為該項操作失敗。
s106:將所述字符串進行解碼處理,獲取第二簽名信息和發現消息。
第二終端提取到廣播消息包括的字符串后,對該字符串進行解碼處理,該解碼處理操作也是基于base64來進行。解碼完成后,第二終端獲取到第二簽名信息和發現消息,第二簽名信息是相對于第一簽名信息而言的,接收端接收到的信息。
s107:利用公鑰對第二簽名信息進行解密得到第二hash值。
s108:將第二hash值與第一hash值進行匹配處理。
第二終端接收到第二簽名信息后,利用第一終端的公鑰對該第二簽名信息進行解密操作得到第二hash值,并對得到的第二hash值和第一hash值進行匹配檢測。若二者匹配一致則認為接收到的消息是第一終端發送的有效信息,否則則認為該消息無效,即本輪操作就此結束。
s109:如第二hash值與第一hash值匹配一致,提取設備信息的第三hash值。
如果第二終端檢測第二hash值和第一hash值匹配一致,則第二終端提取第二終端的設備信息,并對該設備信息進行提取操作獲取該設備信息的第三hash值。
進一步地,所述設備信息包括第二終端終端碼信息和第二終端端口信息。
上述第二終端的設備信息包括的是第二終端的終端碼信息和第二終端的端口信息,發送第二終端的終端碼信息和第二終端的端口信息的目的在于,向第一終端傳遞第二終端可以用于與第一終端進行連接的端口信息,同時確定第二終端的終端身份。
s110:將所述第三hash值進行加密處理生成第三簽名信息。
第二終端得到第三hash值后,對其利用第一終端的公鑰進行加密處理,得到第三簽名信息。使用公鑰處理后得到的第三簽名信息,應當使用第一終端的私鑰進行解密處理。
s111:將所述第三簽名信息進行編碼處理,得到響應信息,將所述響應信息發送到第一終端。
第二終端得到加密處理的第三簽名信息后,對該第三簽名信息和設備信息進行數據編碼操作轉化為ascii碼格式的字符串。比如可以使用base64將非ascii字符的數據轉換為ascii字符,以此保證傳輸數據的正確和安全。編碼完成后,將上述響應信息發送至第一終端進行后續操作。響應信息采用單播形式發送,其作用在于傳遞ip和服務監聽端口。
s112:所述第一終端對所述響應信息進行解碼處理,得到第四簽名信息。
第一終端接收到第二終端發送的響應信息后,基于base64對該響應信息進行解碼處理,解碼得到第四簽名信息,第四簽名信息對應于上述第三簽名信息。
s113:將所述第四簽名信息利用私鑰進行解密,得到第四hash值。
s114:第四hash值和第三hash值進行匹配。
第二終端對解碼得到的第四簽名信息利用第一終端的私鑰進行解密,得到的是第四hash值,第四hash值對應的是第三hash值。得到第四hash值后,將第四hash值和第三hash值進行匹配性檢測,檢測二者是否一致。
s115:如果第四hash值和第三hash值匹配一致,則所述第一終端與第二終端建立連接。
如果檢測結果為第四hash值和第三hash值匹配一致,即意味著第二終端成功接收到了第一終端的設備信息,即第一終端與第二終端成功建立連接。
進一步地,所述如果第四hash值和第三hash值匹配一致,則所述第一終端與第二終端建立連接具體為:
所述第一終端向第二終端發送建立連接請求;
所述第二終端接收所述建立連接請求,并與第一終端建立連接。
當第一終端檢測第四hash值和第三hash值匹配一致時,即意味這第一終端與第二終端建立連接這一行為可行。
因此第一終端若要和第二終端建立連接,首先需要第一終端向第二終端發送建立連接的請求信息,當第二終端接收到該請求信息后,驗證該請求信息安全有效,則同意與第一終端建立連接。
本發明實施例提供的建立連接的方法能夠自動發現局域網內的終端設備并建立連接以進行信息交互。
專業人員應該還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現,為了清楚地說明硬件和軟件的可互換性,在上述說明中已經按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執行,取決于技術方案的特定應用和設計約束條件。專業技術人員可以對每個特定的應用來使用不同方法來實現所描述的功能,但是這種實現不應認為超出本發明的范圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(ram)、內存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術領域內所公知的任意其它形式的存儲介質中。
以上所述的具體實施方式,對本發明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發明的具體實施方式而已,并不用于限定本發明的保護范圍,凡在本發明的精神和原則之內,所做的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。