RSA算法簡單實現加密、解密、簽名、驗證(原創Java程序)

小弟我根據另外一篇已有RSA算法程序的基礎上,對其關鍵部分進行了三處重要的修改,從而進一步完善RSA算法,詳細說明如下:

一、RSA算法的核心是要生成兩個大素數,所以我將上文中的輸入素數,改爲自動生成兩個大素數。並將公鑰和密鑰也改爲自動生成,增強代碼的可利用性和可操作性,方便用戶演示。

二、由於RSA算法的運算中,需要大量的mod運算。比如:加密:C=M^e(%n)       解密:M=(C^d)%n. 由於數字巨大,如果用常規的存儲類型,比如int,long型,在計算過程中,如果公鑰或密鑰過長,會產生溢出,導致程序錯誤。所以,我採用了Java中的BingInteger類來存儲數據並進行相應運算,利用BigInteger類中已有的多種方法(詳見Java API Doc),可以很好的解決以上問題。

三、利用私鑰進行加密數據,公鑰進行解密數據,實現數字簽名並進行驗證。當然,這種做法僅限於演示,不能用於真正的商業運用。原因是,RSA算法速慢,一般不直接對大量數據進行加密簽名,而是結合其它算法比如md5等,對md5算法產生的信息摘要進行加密而不直接對明文加密。從而一方面提高了安全性,另一方面極大地提高了速度。

代碼我放在http://download.csdn.net/source/480334#aa感興趣的可以去看看,謝謝了

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