RSA算法是一種非對稱加密算法,由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)於1977年共同提出,他們分別以姓氏首字母命名為RSA。RSA算法的安全性基於大數分解的數學難題,是目前使用最廣泛的公鑰加密技術之一。
RSA算法的核心在於使用兩個密鑰:公鑰和私鑰。公鑰用於加密數據,而私鑰用於解密數據。加密和解密過程涉及對明文或密文進行數學運算,這些運算包括但不限於大數分解和素數檢測。
RSA算法的基本原理是,如果有一對大的質數p和q,則它們的乘積n=p×q是一個合數。在數學上,存在一個與n相關的歐拉函式φ(n),使得a^(φ(n))≡1(mod n),其中a是與n互質的整數。在RSA中,選擇e作為公鑰的一部分,且e與φ(n)互質。這樣,對於任何明文M,其密文C可以通過M^e≡C(mod n)計算得出。解密時,使用私鑰d,滿足ed≡1(mod φ(n)),因此C^d≡M(mod n)。這樣,只有知道d的人才能解密信息。
RSA算法的優點包括其適用性和廣泛性,但也存在一些缺點,如密鑰管理問題和性能問題。隨著計算機處理能力的提升,更長的密鑰長度變得必要以保持安全性。目前,1024位的RSA密鑰被認為是安全的,而2048位密鑰提供更高的安全性。
除了加密功能,RSA算法也支持數字簽名,這增加了其在實際套用中的靈活性。