Java Web學習(二)數據加密


一、Tomcat 體系

首先通過一幅圖來了解下tomcat的運行體系:

Tomcat服務器的啟動是基於一個server.xml文件的。

啟動流程:

  • 首先啟動一個Server,Server里面就會啟動Service,Service里面就會啟動多個"Connector(連接器)",每一個連接器都在等待客戶機的連接。
  • 當有用戶使用瀏覽器去訪問服務器上面的web資源時,首先是連接到Connector(連接器),Connector(連接器)是不處理用戶的請求的,而是將用戶的請求交給一個Engine(引擎)去處理。
  • Engine(引擎)接收到請求后就會解析用戶想要訪問的Host,然后將請求交給相應的Host。
  • Host收到請求后就會解析出用戶想要訪問這個Host下面的哪一個Web應用,一個web應用對應一個Context。

二、互聯網上的加密原理

對稱加密

定義:采用單鑰密碼系統的加密方法,同一個密鑰可以同時用作信息的加密和解密,也稱為單密鑰加密

使用場景:由於其速度快,對稱性加密通常在消息發送方需要加密大量數據時使用。(如驗證碼,密碼校驗)

常用加密方式:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等

非對稱加密

定義:非對稱加密算法需要一對密鑰:公開密鑰(publickey)和私有密鑰(privatekey)。

實現過程:(PS:其實用只用一對公私鑰也可以實現)

      • A要向B發送信息,A和B都要產生一對用於加密和解密的公鑰和私鑰。
      • A的私鑰保密,A的公鑰告訴B;B的私鑰保密,B的公鑰告訴A。
      • A要給B發送信息時,A用B的公鑰加密信息,因為A知道B的公鑰。
      • A將這個消息發給B(已經用B的公鑰加密消息)。
      • B收到這個消息后,B用自己的私鑰解密A的消息。其他所有收到這個報文的人都無法解密,因為只有B才有B的私鑰

存在的問題:

  非對稱性加密依然沒有解決數據傳輸的安全性問題,比如A想向B發數據,B首先生成一對密鑰(公鑰和私鑰),然后將公鑰發給A,A拿到B發給他的公鑰有就可以使用公鑰加密數據后發給B,然而在B公鑰發送給A的這個過程中,很有可能會被第三方C截獲,C截獲到B的公鑰后,也使用B的公鑰加密數據,然后發給B,B接收到數據后就暈了,因為搞不清楚接收到的數據到底是A發的還是C發的,這是其中一個問題,另一個問題就是,C截獲到B發的公鑰后,C可以自己生成一對密鑰(公鑰和私鑰),然后發給A,A拿到公鑰后就以為是B發給他的,然后就使用公鑰加密數據發給B,發送給B的過程中被C截獲下來,由於A是用C發給他的公鑰加密數據的,而C有私鑰,因此就可以解密A加密過后的內容了,而B接收到A發給他的數據后反而解不開了,因為數據是用C的公鑰加密的,B沒有C的私鑰,所以就無法解密。

  1、被截獲后發假消息給接收方,使得接收方無法識別消息的真假。

  2、被截獲后發假消息給發送方,發送方用截獲方密鑰再加密發給接受方,此時接受方無法解密。

解決方案:

依靠第三方機構(CA機構,即證書授權中心),使用數字證書來擔保。(數字證書的使用可以參考:https://www.cnblogs.com/xdp-gacl/p/3744053.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM