天天看點

一張圖了解RSA加解密與加驗簽

       RSA加密驗簽是對安全性要求比較高的機構間通信常用的方式,密鑰足夠長的情況下,目前的計算能力還不足以解密(不過量子計算機...未來誰知道呢!)。然而,我發現還是有人對這種過程一知半解。比如你們的加簽算法用的什麼?回答RSA......比如有些機構會對生成的密鑰對再用Base64進行編碼,這樣使用的時候就需要對應的解碼,這個過程都被封裝在工具類裡面了,是以大家看代碼的時候盡量多進去看看源碼。RSA隻是一個加密的算法,加簽需要先對内容進行HASH然後再加密,比如SHA1WithRSA就是一個常用的RSA加簽算法。

       網上很多講解RSA的文章,本文就不說了,JDK自帶了對應的算法。

       RSA加簽、加密後的封包為什麼是安全的?

       A機構生成A的密鑰對,把公鑰給到B;同樣的,B把自己的公鑰給A。這樣A在生成加密封包的時候,會用B的公鑰加密明文,然後用A的私鑰對明文進行加簽。OK,此時隻有B的私鑰才能解密封包,而私鑰隻有B才有,即使封包被截獲,第三方也無法解密。如果A的公鑰是公開的(實際上可能也不公開),那麼第三方能解析出封包的HASH結果,也隻是Hash結果...無法獲得明文。B接受到請求後,用自己的私鑰解密封包,然後對封包進行驗簽,如果不一緻,那麼也不會響應請求,這樣的模式,通信過程的安全性就可以得到保障了。具體過程如下圖所示:

一張圖了解RSA加解密與加驗簽

繼續閱讀