java加密與解密的藝術 -- 筆記

第1-3章:


    這幾章主要介紹了一些爲什麼要加密,加密的歷史原因以及演變過程,並介紹了幾種常見的加密算法,畫出了對稱與非對稱加密在實際應用中的思維導圖。

    (瞭解到加密技術分爲對稱加密,非對稱加密,單向加密(散列加密))

    (一般單向加密用於提供數據完整性的校驗,使用到的算法有MD5,SHA1等Hash算法),(消息認證,鑑權等多用非對稱加密算法,通過使用數字證書,公鑰私鑰來實現)

    另外,JCA 是提供基礎的加密框架,類似於一個工廠,生產密鑰產生器,數字證書,簽名等基礎設施。JCE 是JCA的擴展,也就是加工廠,拿到JCA的基礎設施後,放入一些亂七八糟的算法,讓產出的產品具有保密性。JSSE 是負責在網絡傳輸中加密的,是基於SSL的。


    JCE 最後封裝成了一套接口,作爲安全提供者接口。據說,它的精髓就是,引擎和算法。一個算法是一個引擎的具體實現,例如(provider + rsa算法)

    ↑ 這裏面使用到了提供者模式。↑ 即,基礎功能提供者只需要關注提供哪種服務(加密,解密,or anyone else),不需要關心算法是否又推層出新了。

    (據書裏說,java.security.Provider 和 java.security.Security 這兩個類是JCE的核心,於是我去翻了翻API)……基本看不到什麼有意思的。

    於是人書裏繼續說了,其實真的要實現加密解密,還要用javax.crypto裏的功能。好吧,這樣就和我見過的匹配上了。所以上面說的核心只是說掌握如何操作,這裏的核心是幹實事,基層核心。

    兩個重要的,私鑰的規範接口實現類是

PKCS8EncodedKeySpec


公鑰的規範接口實現類是

X509EncodedKeySpec


意思就是說,你用這兩個整出來的公鑰和私鑰纔是經過國際認證的正品。憋整些山寨貨,行不通的。


第4-6章


  終於來了點乾貨,其實也沒說啥,就介紹了消息摘要什麼的。

  消息摘要主要分爲只提供消息摘要進行文件完整性校驗的,以及除了消息摘要,還提供密鑰進行校驗的。

     只提供消息摘要的話一般實際應用中直接給MD5或者SHA的數字指紋就行了。

     在某些場景中只驗證完整性是不行的,還要防止數據和摘要全部被篡改和仿冒,比如攻擊者劫持了你的消息和你的摘要,並將其全部替換,那麼接收者就是用替換後的摘要去驗證替換後的數據,結果雖然一致但是已經不是發送者發出的東西了。簡而言之就是,狸貓換太子還換了個奶媽,全部被掉包了。

    所以,發送者與接收者私下還有一個密鑰,要使用這個密鑰來校驗這個文件是不是原始的那隻。常用Mac算法。


    另外,如果使用java自帶的security包太麻煩了,最好使用apache-common-codec裏的工具,digestUtils和HmacUtils等。。最好使用+hex的方法。標準!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章