• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于JAVA的簡單Socket通信

      2020-08-04 09:49:21孫炳潤馬剛
      關(guān)鍵詞:數(shù)字簽名

      孫炳潤 馬剛

      摘? 要:隨著信息技術(shù)的飛速發(fā)展,Socket的數(shù)據(jù)傳輸安全技術(shù)成為近幾年的熱點(diǎn)研究問題,為了實(shí)現(xiàn)網(wǎng)絡(luò)數(shù)據(jù)傳輸安全技術(shù)的功能,必須充分利用Socket通信的自身優(yōu)勢,并結(jié)合Java語言的安全性特點(diǎn)來完成。本文分析了Java平臺下Socket數(shù)據(jù)傳輸安全的特點(diǎn),研究了三種基于Socket數(shù)據(jù)傳輸安全技術(shù)。希望給后續(xù)研究提供一定的參考

      關(guān)鍵詞:JAVA;傳輸安全;對象序列化;數(shù)字簽名;SSL

      一、JAVASOCKET網(wǎng)絡(luò)通信編程的實(shí)現(xiàn)過程

      1.1建立服務(wù)器端

      (1)調(diào)用ServerSocket類,以某個端口號為參數(shù)創(chuàng)建一個ServerSocket實(shí)例,即是服務(wù)器端的服務(wù)程序在監(jiān)聽該指定端口的Socket。

      (2)創(chuàng)建ServerSocket并保持監(jiān)聽狀態(tài),調(diào)用了ServerSocket對象的accept()方法,隨后接收來自客戶發(fā)送的Socket連接請求。在服務(wù)器程序監(jiān)聽Socket連接請求時,也可采用Java的多線程技術(shù),實(shí)現(xiàn)并發(fā)服務(wù)器連續(xù)監(jiān)聽連接請求。

      (3)調(diào)用Socket對象的getInputStream和getOutputStream方法建立輸入流和輸出流,并進(jìn)行封裝。不過在調(diào)用這兩個方法時可能會產(chǎn)生I/O異常,必須要去捕獲這個I/O異常。

      (4)使用建立好的輸入輸出流對象的read和write方法完成和客戶端的數(shù)據(jù)傳輸,并把處理結(jié)果返回給客戶端。

      (5)在服務(wù)器與客戶機(jī)雙方通訊結(jié)束以后,服務(wù)器端應(yīng)該及時關(guān)閉輸入和輸出這兩個數(shù)據(jù)流。

      1.2建立客戶端

      (1)以服務(wù)器指定的IP地址或主機(jī)名以及服務(wù)器指定的端口號為參數(shù),調(diào)用Socket類的構(gòu)造方法,創(chuàng)建一個Socket對象。

      (2)建立了客戶端通信的Socket后,就可以像服務(wù)器一樣使用Socket的getInputStream和getOutputStream方法來創(chuàng)建輸入流和輸出流。

      (3)調(diào)用輸入流和輸出流對象相應(yīng)的方法讀寫字節(jié)流或字符流數(shù)據(jù),完成雙方的通信任務(wù)。

      (4)在客戶機(jī)與服務(wù)器雙方通訊結(jié)束以后,我們也要用字節(jié)流或字符流對象的close()方法來關(guān)閉用于網(wǎng)絡(luò)通信的輸入流和輸出流,再用Socket對象的close()方法來關(guān)閉Socket。

      二、基于SOCKET數(shù)據(jù)傳輸?shù)陌踩夹g(shù)分析

      2.1基于Socket的對象序列化的安全技術(shù)分析

      (1)對象序列化的安全技術(shù)分析

      對象一旦被序列化后,作為對象序列化結(jié)果的字節(jié)流可以讀取,也可以被任何能訪問該流的對象改變,這就允許任何對象訪問序列化對象的狀態(tài),因而違背了用戶所期望的隱私權(quán)。同時,用戶也可以任何方式改變流中的字節(jié),并允許重新構(gòu)造Java平臺下保護(hù)范圍內(nèi)從未創(chuàng)建的對象。

      2.2基于SOCKET的數(shù)字簽名的安全技術(shù)分析

      數(shù)字簽名的技術(shù)主要有DSA和RSA算法兩種,而DSA比RSA產(chǎn)生密鑰速度快,但它們的安全性差不多。其主要包括三個過程:一是生成公鑰和私鑰,其中公鑰可以對外公開,私鑰用于加密;二是簽名文件內(nèi)容,即將生成的密鑰對寫入或保存到文件中;三是發(fā)送簽名后的數(shù)據(jù)及公鑰,拿公鑰來檢驗(yàn)數(shù)據(jù)文件中的數(shù)字簽名。

      2.3基于SOCKET的SSL的安全技術(shù)分析

      (1)安全套接層協(xié)議

      a.客戶端向服務(wù)器端發(fā)起通信對話,協(xié)商傳送加密算法,準(zhǔn)備進(jìn)行安全的對話,并告之所用的對稱加密算法、密鑰交換算法、摘要算法等。

      b.服務(wù)器收到請求后向客戶端發(fā)送服務(wù)器數(shù)字證書,并確定使用一種加密組合進(jìn)行通信,為了證明確實(shí)是服務(wù)器端,必須發(fā)送服務(wù)器端的數(shù)字證書給客戶端,并且讓客戶端驗(yàn)證服務(wù)器端的身份。

      c.客戶端再向服務(wù)器端傳送本次對話的密鑰,檢查服務(wù)器端的數(shù)字證書是否正確,通過證書驗(yàn)證了服務(wù)器端證書的真實(shí)有效性后,利用服務(wù)器端的公鑰生成本次對話的密鑰發(fā)送給服務(wù)器端,并告之服務(wù)器端。

      d.服務(wù)器端向客戶端獲取密鑰,并用自己的私鑰解密獲取本次通訊的密鑰,并告之客戶端已經(jīng)獲取了密鑰可以開始通信了。

      e.服務(wù)器端與客戶端進(jìn)行通訊。

      (2)安全套接層協(xié)議

      一般的SSL套接字有許多默認(rèn)選項(xiàng),如果想修改其中的某些選項(xiàng),就要用到SSLContext類的對象來實(shí)現(xiàn)。

      三、基于Socket數(shù)據(jù)傳輸安全方案的研究

      3.1基于Socket的對象序列化安全方案

      (1)將要保密的數(shù)據(jù)標(biāo)記為transient屬性

      如將某一對象中password字段保護(hù)起來,可以對該字段屬性設(shè)置為PrivatetransientStringpassword;當(dāng)對象在序列化發(fā)生時,Java虛擬機(jī)將被聲明為transient的所有域。

      (2)實(shí)現(xiàn)Externalizable接口

      Externalizable接口屬于Serializable接口的子類。但是如果采用這種Externalizable接口的方法,必須就要聲明writeExternal()和readExternal()兩個函數(shù)。將不需要被序列化的字段提取出來放到父類中去,讓子類實(shí)現(xiàn)Serializable接口,這樣的話父類相應(yīng)的字段數(shù)據(jù)就可以不被序列化。

      3.2基于Socket的數(shù)字簽名安全方案

      (1)開發(fā)簽名的數(shù)據(jù)對象

      首先需要有一個待簽名的對象,而這個對象在進(jìn)行序列化時,對象中只出現(xiàn)公鑰。

      (2)開發(fā)客戶端

      客戶端需要實(shí)現(xiàn)讀取文件內(nèi)容,使用安全API接口來產(chǎn)生一對密鑰(包含公有和私有)、簽名文件內(nèi)容,并且通過網(wǎng)絡(luò)來發(fā)送加密后的對象給服務(wù)器,相關(guān)類和方法及步驟如下:

      a.使用KeyPairGenerator類來產(chǎn)生公共及私有密鑰。

      b.使用KeyPairGenerator類的initialize()方法來完成初始化密鑰對。

      c.獲得密鑰。

      d.獲取一個簽名的對象。e.初始化簽名對象。

      e.把需要簽名的數(shù)據(jù)提供給簽名對象,將需要簽名的數(shù)據(jù)讀到一個字節(jié)數(shù)組,然后再通過調(diào)用Signature類的update方法,再把數(shù)組提供給簽名對象。

      f.產(chǎn)生簽名,然后通過網(wǎng)絡(luò)發(fā)送。

      (3)開發(fā)服務(wù)器端

      a.創(chuàng)建Signature類的一個實(shí)例。

      b.用公有密鑰初始化對象。

      c.使用update()方法提供簽名的數(shù)據(jù)來給需要驗(yàn)證的簽名。

      3.3基于Socket的SSL安全方案

      SSL協(xié)議可分為兩層:第一層是SSL記錄協(xié)議,它是建立在可靠的傳輸層協(xié)議之上,為應(yīng)用層協(xié)議提供數(shù)據(jù)壓縮、封裝、加密等基本功能;第二層是SSL握手協(xié)議,它是建立在SSL記錄協(xié)議之上,用在數(shù)據(jù)傳輸開始前,通信雙方身份認(rèn)證、交換加密密鑰、協(xié)商加密算法等初始化協(xié)商功能?;赟ocket的采用SSL協(xié)議的傳輸安全方案需要用到一個Java數(shù)據(jù)證書的管理工具Keytool。Keytool將密鑰(key)和證書(certificates)保存在一個稱為keystore的文件當(dāng)中,每個keystore都關(guān)聯(lián)著這一個獨(dú)一無二的公鑰。

      四、結(jié)束語

      網(wǎng)絡(luò)數(shù)據(jù)傳輸安全已成為網(wǎng)絡(luò)應(yīng)用發(fā)展的一個瓶頸。本文分析研究了網(wǎng)絡(luò)數(shù)據(jù)基于JavaSocket的傳輸安全問題,對基于JavaSocket的網(wǎng)絡(luò)數(shù)據(jù)傳輸安全的三種技術(shù)進(jìn)行了深入研究和探討,提出了三種基于JavaSocket網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)陌踩募夹g(shù)方案。

      參考文獻(xiàn)

      [1]? 耿祥義.Java2實(shí)用教程[M].北京:清華大學(xué)出版社,2013.

      [2]? 王一飛.Java網(wǎng)絡(luò)程序設(shè)計[M].北京:中國電力出版社,2010.

      [3]? 姚凱,劉琳琳.基于Java多線程技術(shù)的網(wǎng)絡(luò)編程研究[J].電子技術(shù)與軟件工程,2017,8:12

      猜你喜歡
      數(shù)字簽名
      淺析計算機(jī)安全防護(hù)中數(shù)字簽名技術(shù)的應(yīng)用
      基于數(shù)字簽名的QR碼水印認(rèn)證系統(tǒng)
      數(shù)字簽名簡述
      掌握方法用好數(shù)字簽名
      個人電腦(2014年12期)2014-12-29 13:29:47
      基于數(shù)字簽名和HSM的數(shù)據(jù)庫篡改檢測機(jī)制
      復(fù)制數(shù)字簽名,巧妙偽裝病毒
      孟村| 满城县| 宣恩县| 怀集县| 宜川县| 德格县| 峨边| 九台市| 密山市| 黔西县| 浙江省| 广西| 胶州市| 新余市| 西青区| 晋江市| 秀山| 荔浦县| 镶黄旗| 黔江区| 陆川县| 西城区| 若尔盖县| 新建县| 彭州市| 湟源县| 台湾省| 玛多县| 道真| 金塔县| 库尔勒市| 滨海县| 宁陕县| 开封市| 方正县| 泸定县| 平安县| 江源县| 甘肃省| 定日县| 汉沽区|