出版時間:2010年4月 出版社:機械工業(yè)出版社 作者:梁棟 頁數(shù):450
Tag標簽:無
前言
眾所周知,Java EE是目前企業(yè)應(yīng)用中使用最廣泛的技術(shù)之一,幾乎在任何一個領(lǐng)域都能看到Java EE的身影。隨著加密與解密算法的發(fā)展,Java加密與解密技術(shù)不斷演進,不斷提高著數(shù)據(jù)的安全性,已成為各大企業(yè)應(yīng)用中一項關(guān)鍵性的技術(shù)。很多企業(yè)應(yīng)用領(lǐng)域的架構(gòu)師都很關(guān)注加密與解密算法在應(yīng)用中的使用,譬如用戶密碼加密、網(wǎng)絡(luò)協(xié)議加密等。如何在名目繁多的Java加密與解密技術(shù)中選擇合適的算法進行企業(yè)級應(yīng)用開發(fā),如何解決Java加密與解密技術(shù)開發(fā)過程中遇到的各種問題,這成為許多開發(fā)者,尤其是架構(gòu)師關(guān)注的焦點問題。然而,國內(nèi)目前還沒有一本書能解決這些問題。本書的作者因工作需要,采用Java加密與解密技術(shù)成功構(gòu)建了企業(yè)級網(wǎng)銀系統(tǒng)。在開發(fā)過程中,作者感受到了Java加密與解密技術(shù)的精妙。作者希望把Java加密與解密技術(shù)在企業(yè)應(yīng)用開發(fā)領(lǐng)域的經(jīng)驗和心得分享給廣大讀者,提升企業(yè)應(yīng)用的安全性。本書面向的讀者本書主要適合以下讀者:所有利用Java進行企業(yè)級應(yīng)用開發(fā)的軟件工程師對于企業(yè)級應(yīng)用軟件工程師來講,這將是一次系統(tǒng)的密碼學(xué)之旅。本書將介紹密碼學(xué)理論、Java相關(guān)算法實現(xiàn)、開源組件包介紹、數(shù)字證書與安全協(xié)議等相關(guān)內(nèi)容,并配有相關(guān)實例為讀者提供詳盡實現(xiàn)指導(dǎo),為構(gòu)建企業(yè)級安全應(yīng)用提供完整的技術(shù)支持。系統(tǒng)架構(gòu)師對于系統(tǒng)架構(gòu)師來講,如何使用成熟技術(shù)快速構(gòu)建安全企業(yè)應(yīng)用是安全工作的第一要務(wù)。在算法方面,本書詳述了Java 6對于密碼學(xué)算法的相關(guān)實現(xiàn),針對AES算法密鑰長度受限問題給出解決辦法。
內(nèi)容概要
本書是Java安全領(lǐng)域的百科全書,密碼學(xué)領(lǐng)域的權(quán)威經(jīng)典,4大社區(qū)一致鼎力推薦。 全書包含3個部分,基礎(chǔ)篇對Java企業(yè)級應(yīng)用的安全知識、密碼學(xué)核心知識、與Java加密相關(guān)的API和通過權(quán)限文件加強系統(tǒng)安全方面的知識進行了全面的介紹;實踐篇不僅對電子郵件傳輸算法、消息摘要算法、對稱加密算法、非對稱加密算法、數(shù)字簽名算法等現(xiàn)今流行的加密算法的原理進行了全面而深入的剖析,而且還結(jié)合翔實的范例說明了各種算法的具體應(yīng)用場景;綜合應(yīng)用篇既細致地講解了加密技術(shù)對數(shù)字證書和SSL/TLS協(xié)議的應(yīng)用,又以示例的方式講解了加密與解密技術(shù)在網(wǎng)絡(luò)中的實際應(yīng)用,極具實踐指導(dǎo)性。 Java開發(fā)者將通過本書掌握密碼學(xué)和Java加密與解密技術(shù)的所有細節(jié);系統(tǒng)架構(gòu)師將通過本書領(lǐng)悟構(gòu)建安全企業(yè)級應(yīng)用的要義;其他領(lǐng)域的安全工作者也能通過本書一窺加密與解密技術(shù)的精髓。
作者簡介
梁棟,資深Java開發(fā)者,有豐富的Spring、Hibernate、iBatis等Java技術(shù)的使用和開發(fā)經(jīng)驗,擅長Java企業(yè)級應(yīng)用開發(fā);安全技術(shù)專家,對Java加密與解密技術(shù)有系統(tǒng)深入的研究,實踐經(jīng)驗亦非常豐富。他還是一位出色的項目經(jīng)理,是V8Booker(手機電子書)項目的核心開發(fā)團隊人員之一
書籍目錄
第一部分 基礎(chǔ)篇 第1章 企業(yè)應(yīng)用安全 1.1 我們身邊的安全問題 1.2 拿什么來拯救你,我的應(yīng)用 1.3 捍衛(wèi)企業(yè)應(yīng)用安全的銀彈 1.4 為你的企業(yè)應(yīng)用上把鎖 1.5 小結(jié) 第2章 企業(yè)應(yīng)用安全的銀彈—密碼學(xué) 2.1 密碼學(xué)的發(fā)家史 2.2 密碼學(xué)定義、術(shù)語及其分類 2.3 保密通信模型 2.4 古典密碼 2.5 對稱密碼體制 2.6 非對稱密碼體制 2.7 散列函數(shù) 2.8 數(shù)字簽名 2.9 密碼學(xué)的未來 2.10 小結(jié) 第3章 Java加密利器 3.1 Java與密碼學(xué) 3.2 java.security包詳解 3.3 javax.crypto包詳解 3.4 java.security.spec包和javax.crypto.spec包詳解 3.5 java.security.cert包詳解 3.6 javax.net.ssl包詳解 3.7 小結(jié) 第4章 他山之石,可以攻玉 4.1 加固你的系統(tǒng) 4.2 加密組件Bouncy Castle 4.3 輔助工具Commons Codec 4.4 小結(jié)第二部分 實踐篇 第5章 電子郵件傳輸算法—Base64 5.1 Base64算法的由來 5.2 Base64算法的定義 5.3 Base64算法與加密算法的關(guān)系 5.4 實現(xiàn)原理 5.5 模型分析 5.6 Base64算法實現(xiàn) 5.7 Url Base64算法實現(xiàn) 5.8 應(yīng)用舉例 5.9 小結(jié) 第6章 驗證數(shù)據(jù)完整性—消息摘要算法 6.1 消息摘要算法簡述 6.2 MD算法家族 6.3 SHA算法家族 6.4 MAC算法家族 6.5 其他消息摘要算法 6.6 循環(huán)冗余校驗算法—CRC算法 6.7 實例:文件校驗 6.8 小結(jié) 第7章 初等數(shù)據(jù)加密—對稱加密算法 7.1 對稱加密算法簡述 7.2 數(shù)據(jù)加密標準—DES 7.3 三重DES—DESede 7.4 高級數(shù)據(jù)加密標準—AES 7.5 國際數(shù)據(jù)加密標準—IDEA 7.6 基于口令加密—PBE 7.7 實例:對稱加密網(wǎng)絡(luò)應(yīng)用 7.8 小結(jié) 第8章 高等數(shù)據(jù)加密—非對稱加密算法 8.1 非對稱加密算法簡述 8.2 密鑰交換算法—DH 8.3 典型非對稱加密算法—RSA 8.4 常用非對稱加密算法—ElGamal 8.5 實例:非對稱加密網(wǎng)絡(luò)應(yīng)用 8.6 小結(jié) 第9章 帶密鑰的消息摘要算法—數(shù)字簽名算法 9.1 數(shù)字簽名算法簡述 9.2 模型分析 9.3 經(jīng)典數(shù)字簽名算法—RSA 9.4 數(shù)字簽名標準算法—DSA 9.5 橢圓曲線數(shù)字簽名算法—ECDSA 9.6 實例:帶有數(shù)字簽名的加密網(wǎng)絡(luò)應(yīng)用 9.7 小結(jié)第三部分 綜合應(yīng)用篇 第10章 終極武器—數(shù)字證書 10.1 數(shù)字證書詳解 10.2 模型分析 10.3 證書管理 10.4 證書使用 10.5 應(yīng)用舉例 10.6 小結(jié) 第11章 終極裝備—安全協(xié)議 11.1 安全協(xié)議簡述 11.2 模型分析 11.3 單向認證服務(wù) 11.4 雙向認證服務(wù) 11.5 應(yīng)用舉例 11.6 小結(jié) 第12章 量體裁衣—為應(yīng)用選擇合適的裝備 12.1 實例:常規(guī)Web應(yīng)用開發(fā)安全 12.2 實例:IM應(yīng)用開發(fā)安全 12.3 實例:Web Service應(yīng)用開發(fā)安全 12.4 小結(jié)附錄A Java 6支持的算法附錄B Bouncy Castle支持的算法
章節(jié)摘錄
插圖:企業(yè)應(yīng)用安全當(dāng)計算機將我們包圍、當(dāng)網(wǎng)絡(luò)無處不在時,安全問題也成為我們?nèi)找骊P(guān)心的問題。我們依賴于網(wǎng)絡(luò),同時又受限于網(wǎng)絡(luò),而網(wǎng)絡(luò)本身卻是不安全的!如今越來越多的企業(yè)應(yīng)用都架設(shè)在網(wǎng)絡(luò)平臺之上,雖然能為用戶提供更快捷和便利的服務(wù)支持,但這些服務(wù)支持也越來越龐大。與此同時,為了滿足用戶日益增長的服務(wù)需求,企業(yè)應(yīng)用不斷在如何提供更好的服務(wù)支持和更大信息量的傳輸方面加大技術(shù)投入。而與此失衡的是,企業(yè)應(yīng)用的安全性卻未能受到足夠的重視。單憑用戶名和口令鑒別用戶身份,繼而授權(quán)用戶使用的方式難以確保數(shù)據(jù)的安全性。1.1 我們身邊的安全問題安全,似乎是個問題。但是,我們覺得這個話題似乎不是那么關(guān)鍵!通常情況下,我們?yōu)橛脩籼峁┯脩裘涂诹铗炞C的方式就可以避免這個問題,但這不是最佳答案,因為這樣做是遠遠不夠的。安全隱患無處不在,還是先來看看我們所處環(huán)境的安全狀況吧!存儲問題閃存芯片的快速革命使得移動存儲行業(yè)發(fā)生了質(zhì)的變化,各種數(shù)據(jù)存儲在各種不同的移動存儲設(shè)備上。當(dāng)一部優(yōu)盤塞滿了公司的年度報表、下一年企劃策略等各種商業(yè)機密后,突然不翼而飛時,我們才會猛然驚醒——優(yōu)盤中的數(shù)據(jù)沒有任何安全措施,甚至連口令都沒有!通信問題我們習(xí)慣于通過IM工具與好友聊天、交換心情、透漏隱私,甚至通過IM工具與合作公司交換公司私密數(shù)據(jù)!當(dāng)你的隱私成為公共話題,當(dāng)你的公司的商業(yè)數(shù)據(jù)被曝光,你突然發(fā)現(xiàn)原來IM工具是不安全的!沒錯,不管是哪一種IM工具,都在不遺余力地告誡用戶聊天信息可能被盜取,“安全提示:不要將銀行卡號暴露在您的聊天信息中!”相信大家都不會對這條提示信息感到陌生。B2C、B2B交易問題到郵局排隊匯款的日子已經(jīng)一去不復(fù)返了,取而代之的是網(wǎng)上銀行,輕松地點擊一下按鈕就能順利完成轉(zhuǎn)賬的操作。
媒體關(guān)注與評論
作為一名Java開發(fā)者,編寫安全的代碼比編寫優(yōu)雅的代碼更重要,因為安全是一切應(yīng)用的根本。所有Java開發(fā)者都應(yīng)該全面掌握Java加密與解密的技術(shù),盡可能不讓你自己編寫的代碼給別有用心的人留下可乘之機。如果你是一名Java開發(fā)者,強烈建議你閱讀并收藏本書,它不僅能作為系統(tǒng)學(xué)習(xí)Java安全知識之用,還可以作為開發(fā)時的參考手冊。——Java開發(fā)者社區(qū) 作為一名架構(gòu)師,構(gòu)建系統(tǒng)時首先應(yīng)該考慮的就是安全問題。如何才能讓你構(gòu)建的系統(tǒng)堅不可摧,沒有安全隱患?掌握加密與解密的技術(shù)將會讓你在進行系統(tǒng)架構(gòu)時游刃有余。本書可謂是安全領(lǐng)域的權(quán)威經(jīng)典,是所有Java應(yīng)用架構(gòu)師的必備參考手冊,強烈推薦。 ——架構(gòu)師社區(qū) 本書是目前Java加密與解密領(lǐng)域最全面、最詳盡、最前沿的著作之一,它將帶領(lǐng)你領(lǐng)略Java安全之美。 ——Java中文技術(shù)網(wǎng) 密碼學(xué)是人類最偉大的發(fā)明創(chuàng)造之一,是一切安全問題的核心和基礎(chǔ)。經(jīng)過幾千年的發(fā)展,它在很多行業(yè)都發(fā)揮著至關(guān)重要的作用,尤其是IT領(lǐng)域。本書以通俗的語言,詳盡的示例對Java加密與解密的技術(shù)進行了詳細的闡述,近乎完美。 ——Spring開發(fā)者社區(qū) 對于Java企業(yè)級應(yīng)用開發(fā)者而言,加密與解密技術(shù)是最重要、最關(guān)鍵的技術(shù)之一,必須掌握。本書是Java加密與解密領(lǐng)域的百科全書,不僅內(nèi)容全面、翔實、實踐性強,而且不乏深度。 ——Ajax中國
編輯推薦
《Java加密與解密的藝術(shù)》:構(gòu)建安全Java應(yīng)用的百科全書和權(quán)威經(jīng)典,5大社區(qū)推薦!當(dāng)你在用IM與好友聊天時,當(dāng)你通過B2C網(wǎng)站購物時,當(dāng)你用郵件與客戶交流時,當(dāng)你公司的應(yīng)用服務(wù)器與合作伙伴交換商業(yè)數(shù)據(jù)時……你是否考慮過你的數(shù)據(jù)是否安全?你的隱私是否會被泄露?你的銀行卡是否會被盜用?你的競爭對手是否能破解你的敏感數(shù)據(jù)?任何一項通過網(wǎng)絡(luò)交互的數(shù)據(jù)都有可能是不安全的,而我們卻越來越依賴于網(wǎng)絡(luò)。如果用戶密碼、聊天消息、銀行賬號、郵件信息、商業(yè)敏感數(shù)據(jù)等通過明文傳輸,后果將不堪設(shè)想。自己的賬號被盜用、隱私成為公共話題、信用卡被人濫用、競爭對手盜用自己的數(shù)據(jù)……于是,為了確保數(shù)據(jù)不被侵犯,數(shù)據(jù)加密與解密技術(shù)應(yīng)在企業(yè)應(yīng)用中都扮演著非常重要的角色。如果你在思考下面這些問題,也許《Java加密與解密的藝術(shù)》就是你想要的!·作為一名系統(tǒng)架構(gòu)師,如何讓你的系統(tǒng)不留有安全隱患?作為一名程序員,如何讓你編寫的代碼沒有安全漏洞?·為什么密碼學(xué)是解決一切安全問題的銀彈?密碼學(xué)究竟是怎樣一門學(xué)科?近千年來,它經(jīng)歷了怎樣的發(fā)展歷程?它是如何延續(xù)至今并逐步發(fā)展壯大的?·博客、論壇、社區(qū)、網(wǎng)絡(luò)聊天、企業(yè)級數(shù)據(jù)交互應(yīng)用、網(wǎng)銀平臺等網(wǎng)絡(luò)應(yīng)用都無法逃避網(wǎng)絡(luò)安全問題,如何在合適的環(huán)節(jié)選用合適的加密算法。從而提高系統(tǒng)的安全性?·Java 6支持哪些加密算法?如何擴充Java 6尚不支持的加密算法?如何增強系統(tǒng)的安全級別?·消息摘要算法和文件校驗算法有什么關(guān)聯(lián)?它與普通的循環(huán)冗余校驗算法有何差別?如何使用消息摘要算法隱蔽敏感信息?·為何Base64算法可以隱蔽敏感信息但卻無法真正起到數(shù)據(jù)加密的作用,而對稱加密算法卻能輕而易舉地起到數(shù)據(jù)加密的作用?Base64算法與對稱加密算法之間究竟有何關(guān)系?·Sun并沒有提供官方的Base64算法支持。我們又該如何構(gòu)建該算法?針對Base64算法,Apache Commons Codec和BO Lracy Castle提供了怎樣的支持?在其他加密算法中又起到了怎樣的作用?·對稱加密算法已經(jīng)幾乎能勝任所有的加密需求,為何要研制非對稱加密算法?對稱加密算法究竟有何弊端?非對稱加密算法會是對稱加密算法的替代者嗎?·數(shù)字簽名是手寫簽名的數(shù)字化產(chǎn)物,其算法與消息摘要算法有何關(guān)聯(lián)?為什么這種算法在結(jié)合非對稱加密算法密鑰后就具備了認證身份的作用?·對稱加密算法和非對稱加密算法如何分發(fā)密鑰,數(shù)字證書在其中充當(dāng)了何種角色?數(shù)字證書又是如何發(fā)放的?·數(shù)字證書集多種加密算法于一身,它是如何傳遞密鑰的?又是如何起身份認證作用的?在HTTPS協(xié)議中又是如何與SSL/TLS協(xié)議相結(jié)合構(gòu)建安全平臺的?·Key Tool和Open SSL構(gòu)建的數(shù)字證書究竟有何差別?如何在Java中使用這些工具構(gòu)建的數(shù)字證書?·基于HTTPS協(xié)議的網(wǎng)銀平臺,堪稱安全級別最高的網(wǎng)絡(luò)應(yīng)用,更是密碼學(xué)應(yīng)用領(lǐng)域最為成功的案例。Java6提供了完備的HTTPS協(xié)議相關(guān)的API,如何使用這些API構(gòu)建固若金湯的HTTPS平臺?·HTTPS協(xié)議和SSL/TLS協(xié)議是何關(guān)系?這些協(xié)議與數(shù)字證書、加密算法有何關(guān)聯(lián)?如何使用HTTPS協(xié)議構(gòu)建安全的網(wǎng)絡(luò)應(yīng)用?·單向認證服務(wù)和雙向認證服務(wù)兩者之間有何不同?它們與HTPS協(xié)議有何關(guān)系?如何運用這兩種認證服務(wù)保護我們的應(yīng)用?在如今這個信息化時代,數(shù)據(jù)是一切應(yīng)用的核心和基礎(chǔ),有數(shù)據(jù)存在的地方就會有安全隱患,而密碼學(xué)則是解決絕大多數(shù)安全問題的銀彈。Java作為全球最受歡迎的編程語言,它的應(yīng)用遍及企業(yè)級應(yīng)用的各個領(lǐng)域,安全是所有企業(yè)級應(yīng)用中最突出、重要的問題。然而,這些問題從來就不是一種武器就能解決的。消息摘要算法用于數(shù)據(jù)校驗、對稱加密算法用于數(shù)據(jù)加密、非對稱加密算法用于密鑰交換、數(shù)字簽名算法用于身份驗證,等等。若要構(gòu)建安全、堅固的Java企業(yè)級應(yīng)用,不僅要深入了解每種算法的原理并將它們綜合運用,而且還要悟透Java加密與解密技術(shù)的本質(zhì)。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載