原创 對稱加密算法總結 – 流密碼與塊密碼

隨機數 在對稱加密的流密碼算法和塊密碼算法中,都需要生成隨機的密鑰流,明文通過密鑰加密得到密文,所以隨機數生成算法顯得十分重要,它決定加密密鑰,密鑰決定了加密算法的安全性。 隨機數的類型分有三種,僞隨機數生成器,密碼學僞隨機數生成器和真正

原创 總結數字簽名實現身份驗證

消息篡改和不可抵賴性 TCP協議確保數據能夠正確發送到通信雙方,加上數據加密算法保證數據安全傳輸,但是在HTTP應用中通信雙方通常不清楚發送方的身份,尤其在客戶端服務器通信下,通常一個服務器會處理多個客戶端連接,結合前一篇日誌講到的密鑰協

原创 非註解和註解的處理器映射器、處理器適配器

在上一篇日誌中我們看到,配置Spring MVC,當用戶發來一個HTTP請求,前端控制器DispatcherServlet首先會去接收,然後請求處理器映射器HandlerMapping,在處理器映射器中查找可以處理該請求的Handler,

原创 _call_stub_entry入口中的pc( )函數

      在總結_call_stub_entry之前,先再次回顧下Java主函數調用必須經過的call_stub()函數,展開後得到的結構如下: static CallStub call_stub() { return (Ca

原创 Bean Validation數據校驗和分組校驗

前端校驗後,爲什麼需要後端校驗 在前面完成數據參數綁定到Controller時,我們可以在@RequestParam註解中做簡單的空校驗,就是設置required屬性爲true,以此來指定Controller方法中形參是否必須傳入。數據校

原创 Ubuntu下certbot申請和部署證書

前面總結的獲取證書方式裏,使用的是先手動生成CSR文件和密鑰對,然後再根據CSR文件生成自簽名證書,最後進行CRL和OCSP校驗。接下來就把自己在Ubuntu下用certbot申請和部署Let’s Encrypt證書的過程和步驟也總結一下

原创 URL請求映射與Controller處理器參數綁定

還記得以前在配置參數綁定時,視圖渲染一直404- -、,註解的映射器和適配器沒問題,掃描Controller包配置也沒問題,視圖邏輯名,請求路徑都檢查過很多遍,最後發現,竟然是視圖解析器沒配置好!!崩潰!!!排除故障後,正確運行,算是當初

原创 TLS:總結下ClientHello和ServerHello中的擴展項

目錄 TLS/SSL協議擴展 SNI服務器名稱指示 Max Fragment Length分塊最大數量 Status Request證書狀態請求 Signature Algorithm簽名和摘要算法 ALPN應用層協議協商擴展 以前的我一

原创 TLS:接近TCP協議底層的記錄層

作爲構建在TCP之上應用層之下的協議,TLS是獨立開來的協議,任何應用層協議都可以直接引入使用它,其最重要的作用就是將應用層協議,如FTP,HTTP或SMTP等加密處理後,再傳遞給下層的TCP協議來保證數據傳輸的可靠性。TLS將來自高層的

原创 Session會話恢復:兩種簡短的握手總結SessionID&SessionTicket

目錄   完整的握手 會話恢復 Session ID會話恢復流程 回退攻擊 Session ID分佈式負載均衡問題 SessionTicket 恢復過程 NewSessionTicket子消息 完整的握手 當客戶端和服務器端初次建立TLS

原创 Spring MVC工作流與配置-部署Tomcat服務器上運行

當初學習Spring MVC時,最吸引我的是它如何降低整個程序各塊組件之間的耦合度,以及各組件之間的通信流程。降低耦合度的優點無疑就是方便了以後對代碼進行擴展,維護,讓各個組件獨立開來,又能清晰地互相協調通信,是給我感受最深的Spring

原创 generate_call_stub()保存調用者方法棧

    目錄 入參位置 物理寄存器Register類 保存調用者方法棧 棧空間對接        在總結generate_call_stub()保存調用者方法棧過程之前,還是先來回顧下,JVM初始化鏈是怎麼到達該函數的。call_stub

原创 TLS:接近上層應用層的握手層協議

上一篇日誌總結了TLS協議中,在握手層之下接近TCP傳輸層的記錄層協議,其主要工作是將上層握手層的消息進行分塊,封裝,添加消息頭處理。那麼,握手層發來的消息裏面都有些什麼呢?我們都知道客戶端和服務器端握手時會進行密鑰協商,協商得出一個密碼

原创 總結call_stub()中的幾個重要參數

      接着上一篇日誌,先回顧下Java主函數調用時必須執行的call_stub函數: static CallStub call_stub() { return (CallStub)(castable_address(_ca

原创 JVM動態方法棧內存分配

  目錄 運行時動態計算棧大小 Java類型實例訪問方式 參數在方法棧中的存在方式 生成機器指令 統計棧空間大小       上一篇日誌最後寫了JVM在函數內部調用其它函數時棧空間的分配方式,也就是調用者函數和被調用者函數兩者的方法棧模型