小弟我根據另外一篇已有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感興趣的可以去看看,謝謝了