- Java加密與解密的藝術
- 梁棟
- 2671字
- 2018-12-31 19:18:53
前言
眾所周知,Java EE是目前企業應用中使用最廣泛的技術之一,幾乎在任何一個領域都能看到Java EE的身影。隨著加密與解密算法的發展,Java加密與解密技術不斷演進,不斷提高著數據的安全性,已成為各大企業應用中一項關鍵性的技術。
很多企業應用領域的架構師都很關注加密與解密算法在應用中的使用,譬如用戶密碼加密、網絡協議加密等。如何在名目繁多的Java加密與解密技術中選擇合適的算法進行企業級應用開發,如何解決Java加密與解密技術開發過程中遇到的各種問題,這成為許多開發者,尤其是架構師關注的焦點問題。然而,國內目前還沒有一本書能解決這些問題。本書的作者因工作需要,采用Java加密與解密技術成功構建了企業級網銀系統。在開發過程中,作者感受到了Java加密與解密技術的精妙。作者希望把Java加密與解密技術在企業應用開發領域的經驗和心得分享給廣大讀者,提升企業應用的安全性。
本書面向的讀者
本書主要適合以下讀者:
? 所有利用Java進行企業級應用開發的軟件工程師
對于企業級應用軟件工程師來講,這將是一次系統的密碼學之旅。本書將介紹密碼學理論、Java相關算法實現、開源組件包介紹、數字證書與安全協議等相關內容,并配有相關實例為讀者提供詳盡實現指導,為構建企業級安全應用提供完整的技術支持。
? 系統架構師
對于系統架構師來講,如何使用成熟技術快速構建安全企業應用是安全工作的第一要務。在算法方面,本書詳述了Java 6對于密碼學算法的相關實現,針對AES算法密鑰長度受限問題給出解決辦法。同時,針對當前Java 6不支持的算法,如SHA224、ElGamal和ECDSA等,本書詳細介紹如何使用第三方開源加密組件包Bouncy Castle進行相關算法實現補充,并且還詳細介紹了Apache Commons Codec,這些成熟的組件包都是構建安全企業應用必不可少的工具包。在架構方面,本書濃墨重彩地介紹了數字證書的構建、SSL/TLS協議服務搭建,并通過相關實例介紹如何構建單向/雙向認證服務。
? 其他安全領域的軟件工程師
如今企業級應用已經逐步轉變以服務為主的異構體應用,如Web Service應用等。Java加密算法實現遵循密碼學相關國際標準,完全可以與其他計算機語言(如C++、C#等)構建的異構體應用進行數據加密交互。本書為讀者選擇合適的算法并提供詳盡的技術實現。
如何閱讀本書
全書共分為3個部分:基礎篇、實踐篇、綜合應用篇。
? 基礎篇
本篇共包含4個章節,主要對Java企業級應用安全、密碼學理論和Java中與加密相關的API進行了詳細介紹,并詳細闡述了第三方組件包Bouncy Castle和Apache Commons Codec相關的API。
第1章主要闡述了當前的安全問題,并給出了安全的相關標準。本書將在后續章節內通過各個算法介紹逐一實現這些標準,這些標準也是評判系統安全級別的準則。
第2章主要詳述了密碼學相關理論知識,并回顧密碼學的發展歷程。未曾接觸過密碼學的讀者,可通過本章了解密碼學理論的基礎,本書將在后續章節中多處應用該章相關技術名詞。
第3章詳細闡述了Java 6安全領域相關API內容,為讀者詳盡介紹每一個與密碼學相關的類以及方法。該章將是每位安全領域軟件工程師必讀的內容,在閱讀本書的后續章節時需經常翻閱該章內容。
第4章主要介紹如何通過權限文件加強系統安全級別,并詳述開源組件Bouncy Castle和Apache Commons Codec相關的API內容。如果您正苦于AES算法密鑰長度受限,SHA224、ElGamal、ECDSA等算法缺少支持等問題,那么請您閱讀該章;如果您非常希望找到Base64及十六進制編碼算法的成熟開源組件,也請您閱讀該章。本書將在后續章節中介紹如何使用這些開源組件并實現相關算法。
? 實踐篇
這篇主要對現今流行的所有加密算法進行了全面闡述和深入剖析,并配合相關測試用例演示算法實現。在閱讀這篇前,請閱讀本書第2章相關理論知識,并了解第3~4章相關的API內容。這篇將是所有企業級應用Java軟件工程師的必讀內容。
第5章介紹了極為簡單的Base64算法,該算法可以作為加密算法的入門算法。如果僅僅需要確保應用交互之間的數據達到隱藏的目的,那么您在第5章中一定可以找到滿意的答案。
第6章主要詳述了MD系列、SHA系列以及MAC系列三大消息摘要算法相關實現。并詳細介紹如何使用Bouncy Castle構建Java 6所不支持的算法實現。對于一般網絡應用,經常需要為下載軟件提供對應的摘要信息用于校驗文件完整性。相信在閱讀這章內容后,您可以熟練地使用Apcahe Commons Codec為應用實現校驗文件完整性的需求。
第7章將沿著對稱加密算法的發展歷程,詳述DES、DESede、AES和PBE四大算法的實現細節。并詳細介紹如何使用Bouncy Castle構建目前較為常用的IDEA算法。這些算法適用于中小型企業級應用網絡數據加密交互需求,同時也適用于其他安全領域的相關需求,是應用最為廣泛的加密算法,更是密碼學領域的的核心算法。如果僅僅想要通過對稱加密算法以及消息摘要算法構建簡單的加密網絡應用,那么該章提供的實例將非常合適。
第8章主要詳述了構建于對稱加密算法之上的非對稱加密算法,包括DH、RSA和ElGamal三大常用算法。該章是本書后續章節內容的基礎,數字簽名算法、數字證書、安全協議等內容都與該章內容息息相關,請在閱讀后續章節前能夠對該章內容有較深入的閱讀。如果對單向/雙向認證服務底層實現非常有興趣,并想要知道它的來龍去脈,那么該章就是探究該技術旅途上的第一個驛站。
第9章詳述了基于消息摘要算法和非對稱加密算法之上的數字簽名算法,包括RSA、DSA和ECDSA三大常用算法。數字簽名算法是消息摘要算法的延續,是單向/雙向認證服務核心認證技術。如果想通過非對稱加密算法構建簡單的網絡加密應用,并期望使用數字簽名算法對數據進行校驗,那么該章的實例將非常合適。
? 綜合應用篇
這篇不僅細致地介紹了加密技術對數字證書和SSL/TLS協議的應用,而且還以示例的方式講解了加密解密技術在實際網絡中的各種應用,極具實踐指導性。請在閱讀這篇前仔細閱讀實踐篇的相關內容。這篇內容將是系統架構師的最愛。
第10章詳細介紹了如何使用KeyTool和OpenSSL兩大工具進行數字證書管理,并詳細介紹如何在Java中使用數字證書。數字證書是非對稱加密算法公鑰的載體,是SSL/TLS協議和單向/雙向認證服務基礎。如果想要構建安全的HTTPS網絡服務應用,請先閱讀該章內容。
第11章主要介紹了SSL/TLS協議及單向/雙向認證服務。這將是探究單向/雙向認證服務技術旅途上的最后一站。該章將詳述如何通過簡單配置Tomcat服務器快速構建單向/雙向認證服務,內容詳實、極具實踐性。
第12章是本書的實例集合,通過三套網絡應用實例揭示常規網絡應用安全、即時通信網絡應用安全和以數據交互為主的Web Service應用安全,并通過網絡監測工具WireShark對其效果進行檢測。通過不同算法的組合,三套實例逐步升級自身系統的安全級別,極具指導意義。該章為解決網絡安全問題提供了可行性參考。
通過閱讀本書,讀者不僅能全面掌握Java加密與解密的各種基礎知識,而且還能進一步了解Java加密與解密的高級技術和技巧,從而將這些知識都運用到實際開發中去。
- Java EE 6 企業級應用開發教程
- Cross-platform Desktop Application Development:Electron,Node,NW.js,and React
- C#完全自學教程
- Programming ArcGIS 10.1 with Python Cookbook
- SharePoint Development with the SharePoint Framework
- AppInventor實踐教程:Android智能應用開發前傳
- Raspberry Pi Home Automation with Arduino(Second Edition)
- C語言開發基礎教程(Dev-C++)(第2版)
- Test-Driven Development with Django
- Python入門很輕松(微課超值版)
- Building Serverless Architectures
- 計算機應用基礎項目化教程
- Android應用開發實戰(第2版)
- Python數據科學實踐指南
- Java 9:Building Robust Modular Applications